鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
: Y) L- x0 r1 T. O
; V! o6 ^$ X& \7 g2 |9 Xclass CA9 T3 y8 o+ h( D" @/ ?3 w
{6 h) A- ]! q; m6 p" G0 m
public:4 q9 v, n- B$ J4 }! T8 P
        CA();! W2 c9 m# ?  t% j+ [+ F( A
        CA(CA&);
/ {  X: \8 N: }5 u3 ?' [& ^& a        CA(int ,int );
' `5 C% k6 e9 o        ~CA();
4 J+ |& |1 ?6 a0 B3 t6 h; Y( ~        void print();/ {/ A0 ~" o" G
# A5 A  [& O6 n
private:
4 W3 ]+ v* }8 Z. L% R        int i;: P0 D; H  y6 b& ~4 M
        int j;
; e( l6 T% j3 J* G2 f};
0 X% i0 H6 |# V- m1 Y3 \7 W2 X$ k5 a: t+ J! O( T
CA::CA()# C# W% [8 N# F3 v4 q* A4 o5 ]  N) b
{
3 ^9 h  c, m/ h* y; m. [}
* d/ L) i; P' e" q+ V
+ P+ l4 q3 f" P+ _CA::CA(CA&one)
  T* z4 V1 V3 R9 H{
1 K( a  \8 }: i% X        cout<<"调用复制构造函数"<<endl;
5 j& `. T/ Y9 N& w8 Y2 E        this->i=one.i;: f- H) V- t5 U1 f9 ?$ ~- r
        this->j=one.j;# J" Q, U. ?: j: ^0 J
}
0 T0 V  k+ U# i4 o7 G4 w6 j' e2 N; `/ j0 {0 S0 f
CA::CA(int m,int n)
  R& C+ e, C) t, u$ k/ S{
( L9 x" m2 Z  ?' j! L3 {        i=m;
" w( y0 n8 T( A# q0 _3 Z6 N        j=n;4 {4 s% Z- @) o- O* ]
}2 M: C+ b0 `) J9 T( u4 q/ w( h. o
) v8 I& I. E! W& ~8 s0 P# u: t
void CA::print()
$ \5 h; S! K1 x+ V7 {{, }! m3 v- D1 X/ F$ U# V0 m
        cout<<i<<endl<<j<<endl;
8 a# F( w( H2 y  s! x) f}
% U/ J, e: S! e
6 ]; U  d2 Y6 M5 i- j) iCA::~CA(): k$ z! i$ y) D8 v- b# G0 c5 _
{: K# O& ?: E7 x) [: a
}
9 ?9 r# t. r; z" ~) X! f, F% X' u+ b! h3 S& I5 v; u8 X3 l2 D
#include <iostream>. Q2 R3 K" q) V8 c3 M8 O3 i; t2 y
using namespace std;$ v( I) Z: s; Q6 s& L+ A9 X! o" u
#include "复制构造函数工作原理.h"- e) @& w- o" D6 P6 C, k
int main(void){        
. J) B$ ^1 D( u/ Q; [CA a(2,3);        
1 R7 d- @; |% x- B' [/ Y4 f7 Qa.print();      
, o0 ~1 R7 G4 Y CA b(a);        
+ P- A' z8 s$ k0 W1 vb.print();
& ]0 m4 d/ _' v( ~       ; M, H8 K$ g; Z
return 0;* _6 ~3 I  k9 j% l; S% x; P( [
}
5 Q3 Z( e0 ~' b- X7 C- f9 E8 O" d, O2 U, B9 h! N/ |& I( W1 A6 i. R

6 {; t' ^# T4 p$ J% J  X5 T6 e" B& i4 |* g- |% C0 _

: ?0 v) o7 v6 H0 @6 B  ]5 O8 N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
7 a) g$ `7 U) n6 y- s9 @9 x5 @1> 初始赋值时:CA b = a;
& W+ J, c0 E# j: L2 r# V" H2> 按值传参时:void myfun(CA ca);
0 M7 k! j; @& Y8 P) I* T3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

4 n- A% {4 S5 u8 C( k- ?第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-11 14:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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