鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 9 j( C/ q3 _. X. [+ K

; o9 O! x* _# \4 ~* w0 R& S6 b8 F: s8 }class CA  H& j% V7 y/ P4 x2 U# Z, d
{
  q* K3 c# i9 @# ?" I; Fpublic:
. z5 t4 D9 U! [; {        CA();& c  q% ?1 N; w- U8 a3 D
        CA(CA&);
0 S" @' m: T' |9 G  \0 s& i        CA(int ,int );, o9 t1 k7 P5 @0 n' g
        ~CA();6 |! O% g9 e9 S: R3 z' j
        void print();' C: I! D$ r% U0 }
( x& [) H3 s3 F1 e4 h5 u+ F4 P
private:
9 Z7 _5 M0 Q3 `9 C, c1 I; l        int i;2 h  k, |* r4 A- ~& Z5 P  p9 ^1 |
        int j;0 Z8 J7 l& k, u
};
. z$ h) M% h- y6 T! i/ F* H* m- K/ ^4 I
CA::CA()
+ ]4 X8 I4 t, E% s6 V0 f{# P( Q) y6 [) |, o2 s4 J; P4 V
}  k8 ?* v: f1 ]; g6 T. W' g
5 f3 V8 G3 j8 ^1 }+ v
CA::CA(CA&one)
* F$ t! j$ u1 n2 q* N{9 H7 ^, B( q; m7 }' y; |
        cout<<"调用复制构造函数"<<endl;
8 Z+ s+ _- f6 P& t# K: o        this->i=one.i;
' V- m) a3 ^# F5 ?: I        this->j=one.j;
% z) }2 ~  M) P  T}2 r0 V* L0 z: ^0 G( d9 X

4 D9 O2 u8 a6 z7 x7 c2 m3 xCA::CA(int m,int n)4 j. i2 Y) C* N8 e
{4 v# Y6 v- ^, _! o
        i=m;( `! y, R* K1 _* j" o
        j=n;8 [& b& F* b: o% I( q
}
, ]* H  u6 M/ B; f0 r
9 L* M! _0 \/ ~void CA::print()
) e& t/ h2 G" E* W- _{# W# c4 c! x  n# V" o
        cout<<i<<endl<<j<<endl;
1 _+ ]2 S; N( q  k* x( v1 H; F% |}
0 J( y) ?4 T4 C* t6 Q2 Q6 r# N6 R7 A* p% h# ^# ]1 l0 ?* D
CA::~CA()
, E) w& ^) D3 L{
+ d1 |$ X# P# v' ?& c}0 D! |. A0 _" z6 }# ]+ S
5 w( o* _1 `0 F- E' X
#include <iostream>
) K( K$ o  L4 T8 q5 Yusing namespace std;
" m- }/ n5 A: ^: f; H6 [* W& [#include "复制构造函数工作原理.h"
6 R9 M, F+ m% S& {3 d* A: Hint main(void){        
  n4 ]9 c1 U3 p, xCA a(2,3);        ' |3 a/ V# Q7 w( {4 m. @
a.print();      
9 G$ y' k( z* ^/ { CA b(a);        
3 n& I6 F5 l* i4 J6 Fb.print();& H) T" \3 B1 e$ k7 Z  [- F
      
( M' `6 b: w8 D3 i" R& U return 0;" t) k6 [% Z* t- Y
}
! Y  ]$ W% S' J- N7 S; j& Z/ \# h7 g& v6 ^
( p% m0 {8 m: }4 W$ g' v, ^8 S
, B5 x( T8 E, @9 |, T8 S  C
/ R: s  G8 Z% Q/ T1 R1 c. m- o
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! ?# r9 g% o0 P. R- C1> 初始赋值时:CA b = a;
- ]0 L% p3 k" m( C5 h2> 按值传参时:void myfun(CA ca);) y+ f9 |; U+ J! t( x  [
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
, z0 `- t0 f6 M) t0 t; r) R复制构造函数在以下几种情况下调用:- w  Z$ d) w4 P$ e' m
1> 初始赋值时:CA b = a;
4 N) q! I, N/ `6 O6 e+ ~2> 按值传参时:void myfun(CA ca);
% O2 y) F. ]# S: N& T. s7 ?7 J
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-21 10:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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