鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
" i$ l. x2 q- j3 M
$ z4 Y0 }% T" U/ y7 H( r4 {- Sclass CA! Z' t6 [- y/ Q5 p# s3 {
{
& m$ r2 p# z. _  o' S6 K+ _public:
( B# H  }- p; E, Q0 g        CA();
) x6 c. }  B& s9 g        CA(CA&);% F; x! a% s2 H5 h7 Y; k
        CA(int ,int );
9 B/ n* g: s2 {- l        ~CA();( q) o  T  M3 o6 I% P
        void print();
5 H( K2 l" m  z9 c
) v1 C, b* }5 V2 |; y' Lprivate:4 L' V  N6 S9 D& p
        int i;1 |$ f4 F. X& z3 }. r0 R5 ?" s" }
        int j;
4 s; X9 ~/ H0 `5 e" t( V- q};) v8 H2 q1 p2 e3 j9 V5 J0 h
% u9 y6 s6 D0 `8 t! W" ]
CA::CA()
* m% \# d" f+ d9 h{1 ~5 t) B% {7 ~+ m! G: \1 N
}6 n4 H6 N5 L6 |& V, ~
) w6 v4 s- m8 a+ h$ M
CA::CA(CA&one)9 N7 [0 _7 Q6 W4 }3 x
{% {; y) d/ l, i2 F' o) ]. X
        cout<<"调用复制构造函数"<<endl;6 J7 J; L3 R3 B7 {; v+ K& V
        this->i=one.i;0 N; e: k8 S: Y3 Q5 K/ \
        this->j=one.j;* N$ {. `0 u9 H& N% ]: x( @! m
}, a8 o5 E0 w4 F5 z: J
1 }) g( c* p# x1 I4 M" B
CA::CA(int m,int n)2 H/ Y  u2 a4 F* o/ L( q* q
{
) V$ O4 R7 ~; J0 R% i1 R        i=m;" s" w4 _8 ]; D; g( `
        j=n;0 i  z! F) m8 ^3 I6 F2 h
}9 h8 a: V3 x  S0 O& x/ z3 L6 ^
$ B6 s- @- r; G& b" C* B( k$ g
void CA::print()
+ s( [+ j2 k6 |! d4 I7 A0 b9 ~( P{
" J. j* T0 x7 E2 S3 V8 M! n; `8 N        cout<<i<<endl<<j<<endl;
8 K. I. W3 w6 K) P+ p% T7 V}
) w+ b! u8 |6 [" n+ g1 i$ P
* i$ x5 C: e* ?( Y4 h1 m, D9 ACA::~CA()
. a) C! M' U4 s3 A3 @( L{# s# p' |' I6 _' {% V- W9 c
}
! ]( v, n* k! a) ?' \! K0 a. D+ ^( R/ z- x% R) ~
#include <iostream>9 N0 J) `& K) c: g. q0 P
using namespace std;
( F" g4 P7 ~  ]#include "复制构造函数工作原理.h"4 f* X' h; V; s/ Z" A% G. i) T
int main(void){        9 g5 l$ Y0 r7 {/ x& a2 K  {
CA a(2,3);        
9 Z4 j5 p# M  ba.print();       . v& Q9 Y0 b  g
CA b(a);        
$ t# E) |$ X7 db.print();
( v3 ]; S! N& M6 [( M) G: o- @6 E       0 v& [% E& c# H5 N+ `) J
return 0;
) P5 H* w' g+ v, N' \% f" n}
2 }4 p% o4 a( p) w* y- y5 D# g8 ?5 I: W' [' B4 x( R; X1 e# q
& [! t: M  j- G4 m

5 m+ j& |5 U/ h$ w' z* c
6 Q9 e$ \) k: b, C/ \
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
+ j; n) p% |; I9 p1 j1> 初始赋值时:CA b = a;
% t8 b) [. _& k2> 按值传参时:void myfun(CA ca);. f' R! I! \: n7 Y0 j
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 8 ?( d, Q# W4 z, Y2 v
复制构造函数在以下几种情况下调用:
+ Q' _8 R6 j) Q8 b" x1> 初始赋值时:CA b = a;
0 [" g! M6 L  D2> 按值传参时:void myfun(CA ca);

. T$ V+ l  d" l7 \7 G) a, {第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-3 16:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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