鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 / U+ h* @) ~  b# m

4 C, y0 P1 s* {$ J1 V" k5 l  l; nclass CA
$ e) c1 b2 Y5 F7 h% D8 w# ^{
7 o7 M* A5 b( V0 |2 S  tpublic:
! E5 }$ |" z. [. e/ g/ H        CA();* }& Q" @+ }7 Y: a9 H1 x0 p
        CA(CA&);% q* ~' p5 X7 m7 m1 s4 p5 `
        CA(int ,int );
/ b$ Y% x! M8 \5 o        ~CA();6 n6 r7 |# ^4 e9 t! E$ Q( x8 _
        void print();
7 C  P% |7 b: B# |( k9 O& V  {% ^9 y- s' U2 |. B
private:$ G( P, G" s6 u, m
        int i;
% r! v% a% |) Y% j# o. o        int j;
9 S; `  Q+ \+ E3 Z* r0 B1 b3 z};% A9 |) I& a% `  |: Y

  X" X1 `+ r" j6 T/ YCA::CA()1 k+ F5 ^6 [1 z- B* @& R
{
2 _$ u3 v! Z2 Z* U/ S* ?. ]}# G4 a, @+ H. L

# R: |8 Q6 I7 B; o7 PCA::CA(CA&one)0 A$ Z8 G1 r3 w
{( y7 [# W! M8 J! ]' p. U( @* G+ u
        cout<<"调用复制构造函数"<<endl;: F0 P2 P; P1 {
        this->i=one.i;) N/ j0 V# {+ a) H9 H$ X5 L! x
        this->j=one.j;
9 @! P! a  K! c* x2 n9 J}
& e' m1 J0 N- l  {7 v# D  Q! a
CA::CA(int m,int n)! O4 J7 q; v- e* Q. w( N
{
3 b) l9 Y+ Z) F6 F7 a" S" j        i=m;
( z4 w& x# i* H+ k6 T3 R        j=n;9 H! ]% x# B: Q: t% A
}
4 Y* W2 C  K& o5 N2 x8 P4 e5 N* V1 @# g9 r
void CA::print()' a6 k1 N; V/ U. f! |2 {4 |
{7 x  Z" e6 `8 z5 w/ e( q" e% A: E
        cout<<i<<endl<<j<<endl;
% H. L, i, v) g9 J8 r}
6 q6 L1 D1 `# N5 Y9 p- z3 `1 ^6 Z$ I' ]. J
CA::~CA()
( |* Y/ v1 x! O3 G# v# W, A7 f{2 ?4 r% G) h! f0 X# }9 Q: c
}7 d6 K# L- s5 M1 N" N4 {0 i! i

+ }  Q' ?! ^6 G/ Y& [0 \#include <iostream>8 r9 L" S3 d" ^) d: M3 E# `
using namespace std;5 K/ i' Y8 e. S7 y4 _, f
#include "复制构造函数工作原理.h"
0 a3 O' L( D0 C! gint main(void){        
; K0 J  Z+ {6 n& i2 u) h* kCA a(2,3);        . [# |. T1 o, i8 ?6 W7 E) v
a.print();       7 `1 r4 J& e3 a( K
CA b(a);        
* U# y5 U5 }6 I9 D7 b: ~5 ]b.print();
; t; W- \0 H* o" w, W$ i+ m       6 S. w- T' N7 A: z6 i; \% Q. M
return 0;' X  Y3 m( f/ y
}
8 w! W' ^+ z) p; N2 l+ d( |% h7 n) U& \' O. _, J% t
8 S1 d4 B% E6 f% f) K. {  W& V
  M# U( }- Z  @4 a1 H+ r

8 Z* H" w7 i2 J' C( M0 `) t6 e
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
+ \: m/ _' K+ K8 Y8 w7 ]% C1> 初始赋值时:CA b = a;- _" q' ^6 L& [1 ~0 k9 S
2> 按值传参时:void myfun(CA ca);0 z6 x) v+ H0 U' E) s: Q0 S
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 3 k6 v  ^8 n& R3 w9 L
复制构造函数在以下几种情况下调用:
# h5 p/ d; A, V" l. \+ e& {1> 初始赋值时:CA b = a;3 H9 c2 a2 I( w6 m% |! U
2> 按值传参时:void myfun(CA ca);
& q6 ?+ H! m  z1 }# q; t
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-3 00:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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