鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. C; I$ V' P+ ?1 r7 p% q$ r
, {) c; t% h0 y$ w: Mclass CA
. H" X4 k) |  }! Q, M/ a{
7 k- I# u/ y+ N/ [; Ipublic:
" ?) U0 A: _( ?1 q+ e# y" f        CA();
2 e# g( k' H" w2 T9 H        CA(CA&);: ?. G/ m" X2 Y4 C8 }* w* i
        CA(int ,int );$ a: u" z* J; c
        ~CA();
7 ~# _& p1 i, e) |: c3 ^4 W" F( ~        void print();' T- f+ t- {, K" L6 F7 O; z4 x
( F5 g5 ^' l% p# x) n1 q2 y
private:, `" p" K. ^: Q7 S
        int i;& m% v" r9 Q( E( ?( S
        int j;
" ~9 b0 n. F& t2 ?  N0 @2 H};
7 r* v  a* x7 V& B
8 ?5 K* J6 c6 M: z+ @CA::CA()$ P/ A; I4 c4 E/ R* W9 g' m$ [
{
4 `( ~( G* {3 S' c( Z  O. Y}
0 o. V" I, p  F* S1 C7 e
; Q+ C1 J5 q, F: ~/ UCA::CA(CA&one)/ X+ L+ H% s% L( C
{' m' n) c9 L( L! M" e
        cout<<"调用复制构造函数"<<endl;- v" H- Q+ ?9 T& C/ @/ g
        this->i=one.i;
6 u$ A1 c7 |6 Y8 m2 C2 u  G        this->j=one.j;, f6 \& E6 y0 b5 ?) `7 `  \( R" ^
}
- ]/ C9 H# Z3 Q3 }2 A' n' a6 ?- s- Q; i6 I$ z( k1 i, I( n
CA::CA(int m,int n)- {& U6 _) b; h* X/ Y
{  Z$ ^' e! ~2 h3 A4 m9 C, ~. H: l
        i=m;) |4 V+ }1 T9 u+ R% c) T2 m
        j=n;. @+ @8 B+ D. i, h# z- l4 a
}
& ?( D9 ^0 O3 F; ^6 H" k: N" K2 G1 v0 W; m& Q' m; f
void CA::print()# O% [- B+ Z& ?# f
{$ |3 J3 O+ t7 l1 D& {4 Z6 M# A5 G1 q
        cout<<i<<endl<<j<<endl;
9 X- P+ T' _6 A/ [" u}+ |; K0 d- Y0 C, v3 d/ C3 l1 Y. `
6 X: ], j( \8 e' y7 o7 \
CA::~CA(): i& ^2 a% C' ?, e; }& W
{
3 A/ @+ [0 D$ ]0 E% u, R2 r5 f}# U; S, N7 G: v' Y: N
! d% \9 r4 t8 k7 H) {# [4 e
#include <iostream>
, p* r! Z* d3 D6 t2 ousing namespace std;
6 S# q9 Y$ _: H#include "复制构造函数工作原理.h"
# ~) [4 G2 A! w/ x0 Qint main(void){        
- u! w, j( B+ K7 `CA a(2,3);        0 N6 W: I4 R2 H/ m
a.print();      
, D% h' X0 q: w' b- G CA b(a);        . l6 ^+ g' M3 G5 P9 v$ I/ d- o4 q
b.print();/ p1 ?% g# p  A/ v* \, _: E% t
      
5 q8 ^! _7 v3 H9 ^( [5 t return 0;
( h+ [" u3 u8 o- |! y0 \}3 @. f3 @# z2 w9 h0 K% T

6 h) [5 ]; F$ v5 o* Y. [4 R! B! [4 f- i8 F; b

: {; c5 J. w6 z, E$ n! ]5 a
+ N, j! k# F4 \# x# d' W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:/ p. t$ e/ u) R5 @
1> 初始赋值时:CA b = a;8 T. j- P; y2 k
2> 按值传参时:void myfun(CA ca);
, a& c1 f5 F' x" e1 W* h8 ?3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 G: L7 O8 U" l. d# e复制构造函数在以下几种情况下调用:
3 r2 q/ B" R9 Q% k* y" @; H1> 初始赋值时:CA b = a;0 o9 `% }9 N+ A: k. c" R9 F- b$ o  W7 I
2> 按值传参时:void myfun(CA ca);

6 [5 O! R9 ?" `$ E1 M第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-3 23:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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