鱼C论坛

 找回密码
 立即注册
查看: 2911|回复: 2

[C++个人笔记] 57.复制构造函数工作原理

[复制链接]
发表于 2013-3-21 09:14:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 / _, d. @4 g/ r0 n% c/ c

8 j( s7 d7 r! X, }- c  t+ nclass CA4 q/ X6 K5 e! @6 E0 b  b
{/ m& v. ?3 V+ B- C9 U& y/ e3 z
public:
1 D- M9 g9 L! v" o        CA();* }7 Z  A% n3 Z0 a& L2 w# q
        CA(CA&);
) A5 ^% O4 x9 f( }        CA(int ,int );
1 k7 v, j% h! C- f& n8 P( `        ~CA();' r  E& K  s" G1 q3 d5 M
        void print();
/ n; e) T; S3 l5 X7 d
( b8 I4 @' ^, L+ p4 sprivate:2 `5 l9 s$ D" m1 p0 ~, b+ L  j, o
        int i;7 J$ }4 x+ e6 ~; B& m0 X
        int j;2 a8 t* X- U5 L+ x
};
$ u1 n1 `8 p# f( W' q7 |4 t  U% y
CA::CA()
8 m" I" E. S" c; D. F7 @  m{
  M7 t5 p  n; ^3 \- _7 z. _}
/ u+ M! _; a6 f; R* j8 E+ m$ ?  v9 r) k# X) ]6 r
CA::CA(CA&one)
: Q7 }: @9 k0 b! u9 V& n, G{
" Q: Q, T. t. s6 K        cout<<"调用复制构造函数"<<endl;& `+ |- w2 l0 c
        this->i=one.i;
, d# s* a9 `9 p% U+ _$ E        this->j=one.j;6 X4 d- ~7 z+ U& \* Q6 {
}
4 Z! F2 n/ k7 D9 R8 x. J9 o
( W! ~( B8 `. ~& k) {CA::CA(int m,int n)1 O4 _# e4 ?% Y) Q) [+ ]+ c
{+ a# t: W  I* c; O
        i=m;" i" Y4 _* w- i: h; e' D+ O' v! S
        j=n;
3 {3 P0 z" h) q1 h: Z}; R& [# [* Z4 _+ H2 C( y
7 u+ }: V3 ]! a" s2 g2 o
void CA::print()
( @' c# M" W6 _, Y" T3 L{
" V, ]2 R; @* \5 |        cout<<i<<endl<<j<<endl;
$ i: M4 u# x6 S4 d( }8 H9 R}0 a% u! v0 J6 S
# Q7 `5 l9 N/ M, X# R2 ~3 T6 _/ |- s
CA::~CA()" N  ~* Q! S6 r; u; m
{
: n- V5 x6 K: ], C: p% g}
1 v4 @5 S4 k4 W, ], c9 n! o2 U, ~: c5 F2 S8 Q" G
#include <iostream>
  ~* n. f& |) V. L+ Wusing namespace std;4 r  M  V2 U$ o: @/ B" N
#include "复制构造函数工作原理.h"; h( h6 J2 t- W1 T  k* W
int main(void){        1 D9 J- C. W) A- }# Z- {' A
CA a(2,3);        
$ {9 p' C8 f3 }# _4 r; W8 Va.print();       : o' }: x5 F1 u$ }( F8 E& Y
CA b(a);        : X2 e( p8 ]. n  Y8 ]% Z
b.print();! W9 V! C& y- {) T: J( D: Q
      
, J/ F4 l' u  b( p( i6 V& \( ? return 0;
5 ~  |: M% S4 r( V' L$ n}
4 |- d- L2 y5 k( i$ ]
* h$ Q' ^# f5 }: e& j" ]( Z3 T0 P7 j  d$ i+ m  V# L

; E- _! Y% j" s2 w* G& p0 \0 `
% d  _) ?% K0 u* X0 q. z" _3 n7 Y# h
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
0 f: o3 p! \8 j7 G% @( F4 K1> 初始赋值时:CA b = a;
5 s) w7 n; _" T9 G0 U- S2> 按值传参时:void myfun(CA ca);
7 M) ]' Y6 g- ]+ _6 K& P! H3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 & R. `$ ]: Z; }- h$ V
复制构造函数在以下几种情况下调用:
# @# a& ?4 T# v1> 初始赋值时:CA b = a;
* X0 v9 `; O# j$ `6 q* x3 Q" X2> 按值传参时:void myfun(CA ca);
. E( X: l/ K  e+ D' o
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-7 23:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表