鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 3 l/ E' h) n9 H0 w" B

+ _+ S' Q, l6 l4 f& ?3 o# Iclass CA# ?# i1 ]! S* }0 e& f2 ]- y6 F4 G4 t
{
8 _0 [- y: ]9 v: `  tpublic:
% T+ ]9 `9 b) d        CA();
! U0 I/ e: ^& M2 j; ]+ l        CA(CA&);% B- d6 ~! q" j# F/ l# F3 b
        CA(int ,int );6 ~) V& r3 {# M  g- P- W
        ~CA();
* o5 b# r4 s& F$ S        void print();8 r2 A  A: ^/ h+ f1 s4 u! W" f4 U, N9 W

. v3 r3 R$ C& w' Y$ [6 }private:- |3 p6 |) K( ^; R" S5 T9 a
        int i;: p) g1 z5 i$ B* l; L3 L! |1 V$ j9 @
        int j;# G% I" c  }# r/ N  C, C
};' l5 Z7 F* v+ ]) u; r& l
1 _5 G3 l. F5 c1 U( R- J! j
CA::CA()
: _( \6 K. I, T" S" Y5 u' d: v{
; i& o  P! Y' p; i# H  ]8 d}
; j" S9 W! \& {
8 b3 E+ G& U6 F6 j4 T8 [, ~% _$ {$ F) zCA::CA(CA&one)1 s$ f' e  h! J
{- L  D( h+ `$ I; S+ s0 ~
        cout<<"调用复制构造函数"<<endl;! N0 L( b- g& N0 V2 C2 A; }
        this->i=one.i;0 ~6 o4 p/ y3 Y+ A+ r. m8 D
        this->j=one.j;
* s+ T, Z( O0 V1 _6 |+ w9 C}
  _0 {- x  D9 M. |2 z6 L+ ^( H. u
( _7 R& e6 j0 `6 M  t+ p) \$ R! D: GCA::CA(int m,int n)
% ~& _, [+ d% I9 a{/ v; U$ Q9 q" O5 ?" C1 ?" g9 U
        i=m;
) H& g% c4 r6 ?3 _$ Q9 f. j* c; t        j=n;
9 ?) D- s% P0 S0 e# _& H! q}
! b/ O- _- y7 t" a/ v* k6 A' K8 x5 D! h( Q: j: M# X9 {
void CA::print()4 b! N  m. U" M3 ^
{; v2 d- v: U: |; g$ o& l
        cout<<i<<endl<<j<<endl;2 J% p0 ^% a+ g! u9 q2 q0 n; o1 W
}
+ D2 R) k$ o( S+ i, N) }
) n- \9 L7 W# @CA::~CA()
% v3 O$ L2 ^  Z5 \+ R" ]" S; F{% T0 x# E- K$ M: {8 A% o8 y, R
}
# A5 }6 c+ F3 Z# w, O0 A/ O% v/ B  A
#include <iostream>! f. o' U+ U$ E3 g3 @6 p3 N
using namespace std;
; q$ `. V# P/ E8 l5 J5 J0 D5 f, J#include "复制构造函数工作原理.h"  N3 V! K1 C6 h
int main(void){        * z- r, E/ M6 w% N6 j7 c! r
CA a(2,3);        . G' U0 z& z! V
a.print();      
7 A' a7 Z; j! F( A9 D5 S% K: N1 o' M CA b(a);        4 g) D) X$ Y! {7 ^/ o% u
b.print();6 v2 G/ j* d8 q. A
      
' K& @5 b( l3 _" ?. X$ m return 0;0 G4 K: {% y! k9 J8 b
}
* B; t; s! L# ~* {+ b1 z
4 {. O% G0 h6 W4 T  O' E+ t" L' L3 ^9 s

# \1 r' t" J* e1 o( L) T$ r" K& D' d, [1 V0 I
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:: ~4 v0 b# H4 k4 B" d* H. Z& g$ ?. T) P
1> 初始赋值时:CA b = a;
' Q* }; i, V4 p2> 按值传参时:void myfun(CA ca);
/ Q/ r# A$ Z  e8 p3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 3 C0 q% O7 ^' a6 M* k! e. c( \
复制构造函数在以下几种情况下调用:
1 |* v( ^! t( ~: s$ e& ^1> 初始赋值时:CA b = a;
! b- X+ e( \/ Z3 K2> 按值传参时:void myfun(CA ca);

; l: }9 W' N5 t+ {2 Q8 \& {* Z7 F第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-9-19 13:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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