鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
: n% C9 s+ E6 Z: n+ T- d7 p
2 B2 ?6 K* O/ P5 Q1 mclass CA
" p5 k8 \" v$ {  Y2 G( f/ z{
/ a) x% p7 P  F& \public:
% N4 [4 |% w1 p' I/ q        CA();: n+ M- ^2 d; }- K% z3 r3 L# {2 y2 d+ y5 j
        CA(CA&);- Q) q) q; w9 Y$ D+ L5 \1 r$ E1 [
        CA(int ,int );
* V% k, o% N' q: _. J& g. ^        ~CA();/ a, @' d. q, N4 x  }* ?% U7 f
        void print();
- ~% `! C# O; L- F' P" }
9 [+ L& |- K6 [2 v. J7 G5 fprivate:
; R- E: @8 E+ s        int i;
7 f( @8 E+ p+ {$ y        int j;
2 H" D0 z$ Q6 G/ E. Y9 z; m};
% P- G2 J- ^8 G; m1 @9 M8 ^! f  d* I" Q* |& t4 B. T/ F6 I2 Q
CA::CA()  u. Q2 l0 h3 q
{
3 e9 l1 ]1 r9 b9 T) c$ C/ Z7 O}
  y  a+ V  q4 L6 o2 W5 U" x" M) d- F$ r0 R2 s) s' l! Z
CA::CA(CA&one)
- w5 _6 \4 `7 V6 k4 L( ]- E{! g, g4 n. H  p# @* P! b$ p- Y' w
        cout<<"调用复制构造函数"<<endl;
- m, U( @' J" @- _        this->i=one.i;2 Q- R% r" P% y
        this->j=one.j;
8 n. p' n. ?1 V: W. Y  ~}
2 S' ~+ r: p0 t6 A3 s/ P, v" w8 X2 q$ X* }
CA::CA(int m,int n)
1 K5 O( A' G! J* ]4 v{
7 `, S  e& M4 u7 |& t; t        i=m;- x( R9 N' P8 b1 S8 U
        j=n;
) G0 Z( {5 k$ ]. G}. O$ K0 q' U! h3 t9 n
$ C; C6 W+ U+ ]! K" Z& g
void CA::print()
+ ~! F4 n# D9 y/ B{
* R( t/ j9 [6 j        cout<<i<<endl<<j<<endl;
* d' s: g- p1 B% [( i$ F5 N}! m* c3 \7 Q. [- O
. y  [4 O0 R& P
CA::~CA(): B$ d9 F: v; a' O( S# _
{1 o) j5 t' P3 {, o& ~( f
}
; Q- q8 I. T; r5 l. S) ^" e- B. W! Q* W# K+ I" B+ B3 Z
#include <iostream>
! f  q. p& T/ N  t5 jusing namespace std;. A- @7 Z0 S( k/ o# J' X, T3 c( W
#include "复制构造函数工作原理.h"
, |1 }& H+ ~1 [0 E. G. ?int main(void){        # I( {* y2 z" l/ v) C% d) T+ c
CA a(2,3);        3 ~: c1 t, j7 n. c  @
a.print();       0 Y, F: w) `9 H4 b9 u
CA b(a);        + q- J( g# B6 i7 U
b.print();" ]7 V! G* f+ w  F# {; |9 ]
      
5 F' V9 \/ F9 m$ |3 m1 ^! o, p return 0;) g8 K6 s% ]9 L' w8 f; R
}  Q* X  R# B* t. Y3 [, y

9 |3 b4 Z8 @# x  v" ]2 F
: N2 T, o. \7 |+ {1 f( }# w3 k7 }! N# H# l# n& f9 W

" }+ V5 ]4 `, g  k3 j: h- e) M
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! G6 n; a! J7 l1> 初始赋值时:CA b = a;
* o, v+ Z( g8 d2> 按值传参时:void myfun(CA ca);
# ~( c$ |' B' \0 V" j$ _3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 % Z' z2 I4 T; N6 s0 P
复制构造函数在以下几种情况下调用:
5 [; @. ?0 v# J9 M  N& c1> 初始赋值时:CA b = a;
; @/ }: q6 M% @7 ?2> 按值传参时:void myfun(CA ca);

$ ?; y; j, F# V' |. a+ D第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-9 13:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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