鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + F- i' G3 v  N0 t" N) K

' j& A1 N5 @4 s3 G9 Eclass CA
! v: f1 e, T+ e( E% t& v% a{; H. [/ Z  Y/ ?' a( f0 |6 P2 H
public:
( \% ?; p/ }4 c7 N9 _% `$ U        CA();& Q; L% H: m9 m. Y7 Y
        CA(CA&);
+ D9 e- J  g& n% w0 Q, Z' d/ N        CA(int ,int );
' _' G9 r6 n: ^        ~CA();( k  r1 M- I0 y0 c6 ^$ C6 W3 g
        void print();6 ^- n5 i7 |: o8 H* a5 m

) P* i( S. Z) L9 eprivate:. R; H1 {: s- v/ u6 S
        int i;
, g+ h; Q+ n4 }% W        int j;
: k3 h1 L' U7 g6 d: v! j5 x};! H; m0 y: S3 v2 ^* l+ ~7 _0 ^# P
8 Z- l+ Z4 q1 n9 n6 x5 i9 r
CA::CA()1 z  ?5 g! o: i4 O' U
{/ ]2 f4 g# J" z' [' s
}8 V  T" h  Z+ {; g

8 `8 o8 _4 w* W: G9 x/ NCA::CA(CA&one)
6 S1 j7 i' R! I0 D9 }7 h{
- [8 Q+ D; v/ t4 ]% p        cout<<"调用复制构造函数"<<endl;' Z4 O5 R7 T1 e5 \( i# b) h( [
        this->i=one.i;
; ]: N8 M5 q" h6 \        this->j=one.j;
( e5 N4 @# m  p2 u. r" q; q# s}
# U" K& O. ?+ e2 D. `3 X) l6 |
. i' i4 l; d/ Y1 W" LCA::CA(int m,int n)
2 h+ D- ~0 R, _9 w: G4 n{
- X6 z- ~  ^3 L5 i' w        i=m;7 f, o' Q* F1 L
        j=n;7 \2 {0 T, K1 p0 s3 W9 J* V
}
2 f! f. t4 ^2 }  m! ~$ O
; t0 P5 m/ u+ }7 L) Y  Xvoid CA::print()
; C% G" Y. I+ O: s7 e{+ V  ~1 |4 o. S0 W2 `. K6 T
        cout<<i<<endl<<j<<endl;
+ \/ u; ^2 ~  l}0 w, q- a" ?& s
+ w: C1 C: C3 j
CA::~CA()
" h* v. R  Q- X6 `! {{
1 c3 \1 q& g9 J  M% L) C}: Y- j! _( c9 `: G% j, `0 f

  d. U, N6 u7 K5 \/ _7 I1 ~' ?#include <iostream>
, x, X1 u$ m; D! Vusing namespace std;" y% i" h- f! @& j% H: C; y+ R( }
#include "复制构造函数工作原理.h"$ Y) }  J4 ^' U* H) N1 T
int main(void){        : b4 p; w) a9 |1 C" `3 O
CA a(2,3);        , |- ]$ ?, R; I- ]! V) u0 o7 _
a.print();       2 n! t+ e5 z( K$ Z+ e  j5 G0 ?
CA b(a);        - }5 q1 g% O$ y) S3 `% D
b.print();. s: Q; z, E' T  k
      
! `) c! N% A+ N( T% Q return 0;; d+ M4 S- F7 ^
}
0 [+ O3 C# z: u1 |" L) X* |8 j! T$ w
& A) G( m) I; i+ h8 L! r# p! F
& w, y0 q1 F/ C/ O; }! r  j% s$ Z; n) Y6 u8 \/ [* j) h- d8 U
8 h" V1 q4 o! d/ {4 p& @4 x
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:+ q1 S5 r: O3 k
1> 初始赋值时:CA b = a;
4 _& i& c6 V$ d4 r. h2> 按值传参时:void myfun(CA ca);6 Z* E% I" U8 ~/ T
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% p! g! d, t) W7 i6 V+ q8 C3 b, u复制构造函数在以下几种情况下调用:
' j" J, k% a  e+ V3 z9 `1> 初始赋值时:CA b = a;" F% P9 O. J; B5 ?# v4 x
2> 按值传参时:void myfun(CA ca);

9 I* h- e1 L5 ?& {$ U& c7 a第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-6 12:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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