鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + t# O( G. d2 m# q; i# F, @

, j7 C' v% B1 [' T* Y+ _class CA3 h% F; a5 h9 Q3 e- o3 A
{
1 y% w: @# R" h- b8 ^. M& zpublic:6 s6 ^: t( F0 X3 G0 s, i/ ?5 `
        CA();
2 x/ O. y3 l$ k( `" E- S5 x$ a        CA(CA&);1 o# ?4 Z; S4 ]7 g% G
        CA(int ,int );+ p3 D: v2 U4 M2 l
        ~CA();# U  K% x2 T# y" B! I5 B& x
        void print();
: B: J; |1 J, N/ `  l# W% c% Z' b% r2 g- K) ~7 n8 c' e9 ]9 P, ?
private:
! s( N4 i3 U5 U+ U( v        int i;" Y5 o, r" k  c9 a" b. |5 i
        int j;  B8 `9 l8 Z( e9 w! p
};, [* }6 G+ U: H, [- \% y4 N8 ~
. X7 t% y* {: k0 x; I
CA::CA()9 e( Q5 W/ L8 [1 |2 |5 l
{
# e9 A& t( F9 z' {, l- U}8 e) w1 Y1 y8 r' E4 V1 ~6 x1 R
9 f1 I& H. P7 n7 w0 n  h3 U: Q9 B
CA::CA(CA&one)
8 V/ g  H; A# G2 H{! C% L  s3 F& q2 ?& r9 O
        cout<<"调用复制构造函数"<<endl;
- n8 c0 r4 c; L" T9 ^2 Z        this->i=one.i;6 m- J, ]6 w& K, H/ L0 q$ ?
        this->j=one.j;
3 G  O6 D! r" b5 o}
0 P: L# p$ |3 {. }
+ C2 x) h0 P; L; f2 J- qCA::CA(int m,int n)7 S  a& c# N: D6 d( F" I' ]
{  H/ [3 ^/ ^0 f* b4 _
        i=m;4 M0 _  X( `8 H7 Q' q0 h# R
        j=n;
. k/ z0 ?: L  O# Q4 O* \}
- y4 f% k) v7 I( w/ ]0 U* K. t7 _5 u% M4 v
void CA::print()- r7 g3 l2 ^% [# x( C& ^- S% b
{7 j, I7 W" `- }# p6 p8 h/ Z
        cout<<i<<endl<<j<<endl;
) |1 Q1 a7 u" A0 C8 U# W3 E}
# r5 u+ i; _" I* J/ i2 W! J, f' v% R( o3 A+ d
CA::~CA()3 q2 c! _) U! @. t8 L+ R
{
" J. X* x+ W2 F; f1 s  b# i}* h! U' `8 X; B( y! v+ @- ~
! K" D: N* o! R* b- Y3 s" ]# K
#include <iostream>
% g- V$ V( Q: n2 }4 e0 V" Husing namespace std;# i& l5 s$ D6 P( h. J# H7 o
#include "复制构造函数工作原理.h"! U! b7 J3 _$ L& H* X, w( `) C
int main(void){        ! I- ~9 }3 ]& z4 @. D4 l7 J
CA a(2,3);        9 K2 k; U0 J7 \9 j3 e! R  |; p4 Y- n
a.print();      
8 \/ q) k/ {2 F CA b(a);        
* o# f) K) Y4 y7 R, q2 K3 sb.print();
3 t* g; a* o7 Y) K- z4 }       4 N" a5 j  [; I9 O
return 0;
) D. Y  \& z4 X$ ?  ?- s! X# c# c}
  P/ x& N- c% C5 O
9 |1 ?3 G( ^( `* j
  |6 D; @, O& f) h! V/ o% N; b
& A6 O5 N5 d5 `9 o/ \. l
  g  p0 F% l7 o
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 G2 s- w; N: {8 F1 ?
1> 初始赋值时:CA b = a;
" |7 G/ g1 D* o/ c" K$ K2> 按值传参时:void myfun(CA ca);
( e6 V! B. p( P  A* u' P3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
& |. q! n$ i# {5 }9 X复制构造函数在以下几种情况下调用:1 J! G5 b( ]5 t0 x. \4 ?0 f
1> 初始赋值时:CA b = a;7 `# V) i4 H1 x# A6 k8 j' I/ \% I
2> 按值传参时:void myfun(CA ca);

4 t8 j/ u( E3 f1 F, O. E# |0 f第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-4-27 10:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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