鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
0 e% _! Q" f$ D; Q' a
7 ~$ r8 ~; W2 i( V/ \+ A" O, i: Cclass CA/ e& f4 J3 H& D. {
{
, [$ M3 [' I, e* u: v. U4 z# c9 e1 ppublic:4 T/ ^: Q: }8 s2 J) O+ I
        CA();% g4 T3 S5 \: C) [% _: o
        CA(CA&);2 \( B6 ~3 J4 \$ h# U
        CA(int ,int );
( p! n$ H& z4 x1 m- R        ~CA();* N& |# O$ w( M. p
        void print();
0 i& N' K2 m9 ?2 Q: N
% L* b6 P+ x; o2 w% _3 v0 d( {private:
  Z1 A/ k# Q4 q+ `2 h0 o        int i;! l: m0 m7 j2 n) I: R& |5 U
        int j;
1 h1 }$ ^% B' D8 H- n};$ ~. x% y" x4 L/ E

! }5 |0 Z8 x% \1 [6 v! v9 H  _CA::CA()
' u. I; a  ?$ M{
) d# f* q  d: L* q, ^}
! m( _* {. d9 U% C; a6 t0 v
+ X+ U/ T/ k( }6 J) wCA::CA(CA&one)! U2 {2 b5 {5 V6 B
{" L5 W% z( i! l& h  _
        cout<<"调用复制构造函数"<<endl;
8 w, k( m7 J8 C+ }; s        this->i=one.i;2 s% ~7 q  k3 V6 s! p) |
        this->j=one.j;
$ @: ?( }( S' Q}8 V6 n/ F. u/ {5 X

' i" n4 u2 {0 d3 R4 Q# g9 s8 kCA::CA(int m,int n)
- |$ m, B3 y+ t& l{4 W7 E* L! e. j% Z0 D
        i=m;% F) j7 h8 F5 x+ v" L' d# p
        j=n;
. g+ {# E( z+ e3 x. `, i}
% c( ]' V, h6 s* M- O8 U
" V0 ~* z/ U' |$ |) `6 avoid CA::print()
7 m6 }& x3 z9 b( i5 ]  u{9 g3 |; M/ v8 g' h; A5 D
        cout<<i<<endl<<j<<endl;
& ?0 T2 [2 \$ m}
' }- g9 L, B8 w" f# J: u/ e9 [8 H* \% r  f0 [  D1 z& _
CA::~CA()
7 R8 G! g3 J& c1 y: x* A. `. g6 f{2 c4 ^. M2 o4 c) Q1 b' J
}' K. ~  G% ?8 f' `4 D2 ^
5 O- `2 G1 F# R* X( F
#include <iostream>
$ a) y# K6 N  h! Lusing namespace std;4 W/ `. t/ H- B! k
#include "复制构造函数工作原理.h"" Y0 Q! X: G1 [+ Y  g
int main(void){        
, d6 Z( @* g" Y+ A' oCA a(2,3);        * z6 O2 V% G' w' R
a.print();       ) q- k7 @$ w' F% X9 e/ y
CA b(a);        
# h0 i8 V  ]" z) n, ?7 sb.print();  L! P3 F& r& q. z
       ' P% o' n" m3 l. I
return 0;
. \+ M1 x6 X( e' @, S) M# a}
8 \; B3 Q- P( D. q/ w! q0 S2 y8 Z! l7 ], ]4 \
2 ], y' _# [. }5 a  ^% B, G
9 n' `' n0 A0 N
; E' t! }/ R8 F# \
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
2 b9 ]8 F  o' w* ?" x7 e; V6 t% `& x1> 初始赋值时:CA b = a;
7 O' }. ^) p* u8 g2> 按值传参时:void myfun(CA ca);' b3 n* f2 ]' {, l0 h% g- U
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
5 B4 C7 p5 r3 n# W: B- O/ J复制构造函数在以下几种情况下调用:1 G$ r$ s0 Y1 h3 ~
1> 初始赋值时:CA b = a;
6 R/ Y7 h6 |( u. ~' l, m2> 按值传参时:void myfun(CA ca);
* B' G6 i4 A* B: l" n
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-21 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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