鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( q% H5 S) o. @& ]4 Z, u: H% R5 p1 E9 ]
class CA) B+ t* ^# E# |3 y+ L; ^5 [
{
' _7 X* K$ S% t1 ^public:; J! r( B% F5 A
        CA();
$ u6 r, C  ~1 m  q! ?! L        CA(CA&);) ]% b+ q, H( h7 x
        CA(int ,int );
- }( y# F! S; c6 R        ~CA();+ W/ U, e; O- {3 A- g
        void print();
9 E7 x, G; j: c( A3 P$ |8 U1 V! I8 V  Q; l! N+ N8 v* v2 g
private:
: |2 D4 \- `3 A        int i;* M, M; r- @' X) A9 n8 }3 f
        int j;) T! d  {8 P7 B$ l6 P& M: l2 r% K
};1 I9 w. T! M# ~
+ O* p3 I4 E0 S. N( C) F7 T% C
CA::CA()
9 U; }% p- N0 T$ a8 G{
8 J1 N( h2 h3 h6 y. X# v}
2 O  J1 `3 R% _# L9 ^* n. j. Y, R0 v. ~; A; N% ]
CA::CA(CA&one)
, G+ \: ^! O; L{- Y- V( N2 [' E3 c+ F
        cout<<"调用复制构造函数"<<endl;% O$ A& L) e+ T4 Q8 d! T" @4 N! p% V
        this->i=one.i;6 |1 F7 z9 N" i5 }: c; x8 c$ o; E
        this->j=one.j;0 ?) t* L( C# m7 ?
}
- Z  w$ P) j9 M# u- \
$ s# _- Q- X) ~% P5 `: N' f+ ^% BCA::CA(int m,int n)" X3 P' m: Y# `
{3 J* X  A3 }* O9 \& J( A
        i=m;! X3 M  X3 J# s: ^
        j=n;4 V  j$ v/ Y/ v' K: R
}
; i. `) o$ r" F" s! ?1 R
5 B' D2 b; N  ~# w7 q4 {" X4 xvoid CA::print()7 p3 Q% V* B# S( v: X' p! L
{
2 S! ~6 y: y8 S! U% e        cout<<i<<endl<<j<<endl;% R! a) F% \# g
}
2 c+ t0 e' f* c, C, |" E- W
. t7 |( D/ z3 c& J* ?CA::~CA()
0 F/ F% ], f3 s( J, X9 E{# J  Z! Z, w+ V1 R4 F- }
}
8 r1 y1 i$ A# ~7 b% T9 y" M6 J, X9 B  [% A6 t' c  p2 l' v+ {
#include <iostream>' K" o: }! _! w7 Z. d
using namespace std;* F/ W) }" O# t; }
#include "复制构造函数工作原理.h"
/ _0 h. O: D+ v& D( }6 Dint main(void){        
5 M( g1 Z4 L6 X6 @; {. t! sCA a(2,3);        8 Y9 _; G+ X8 @8 h4 P9 x6 P- W
a.print();      
7 B3 D$ Q9 O% h8 p( S6 K% a CA b(a);        1 U/ [$ @4 ?6 B3 k# N0 b
b.print();  w* R& N6 h% M. S8 w: g3 y
      
5 @; C6 `' g+ s; b& q& B1 i return 0;8 k. ^5 `" p; Z1 j! M" f
}
3 q4 G+ d9 m( X" N( y3 h' H% `( q# T! p. D4 I0 X+ b/ _

6 x) R' @) }1 i- s4 W0 F: M) q3 @% ]* N+ y& j2 H8 p
' C2 @! `7 F- v8 X8 u: b0 u
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:  R9 @- d' o* A. b: N
1> 初始赋值时:CA b = a;# b# C( b6 p+ W
2> 按值传参时:void myfun(CA ca);5 ^. b& n, _5 g' D0 T  E
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
$ s& c) T+ D. m3 ]复制构造函数在以下几种情况下调用:
+ ?9 I9 m6 e* C4 X4 o$ L+ C& H1> 初始赋值时:CA b = a;' ?; p$ @1 \& ^' b! h" A
2> 按值传参时:void myfun(CA ca);

7 O, b0 X5 H4 B, ~# k第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-22 06:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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