鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
# Z4 L+ ~/ y, `3 `+ x2 z$ U. `
# p/ ^) J: ?$ r; K" `: Y9 _9 h3 rclass CA  j) w8 z: \4 Q. w% [2 C1 i
{. S/ e* N0 l( X
public:
0 S! `: E# i* C* y        CA();
' c) i/ A. o7 J9 {0 |& C" M3 N        CA(CA&);2 M+ q) m+ _, H. k2 z
        CA(int ,int );  N5 Z( L& ?) m# G" m) W* ]
        ~CA();5 _! n# y" ]8 w. R, y
        void print();: v2 q/ y" N8 E- O/ J. L* X( c
0 ^3 I/ @! }2 E$ z# L0 J
private:8 x0 N7 \# H  c7 N; c/ b! ^
        int i;& L6 }% e, k, c% [# F! ?7 H+ s
        int j;9 q- K" m/ N5 F) Z4 M+ R, V0 z
};
+ T, }, ]2 P( r% c# a" ]  {! m+ W' ]( i. i+ W: U5 A  J4 h, C+ F
CA::CA()2 ~7 O" m" j- n# \( i3 `# C* ~
{
2 F6 m7 H6 C) q0 V}$ `" Y; M/ p. x# I# x, H# u) s

2 Z; D  P, _) [, a! rCA::CA(CA&one)
( K9 e$ I3 t: w$ B{; x. V8 [! K: S+ m
        cout<<"调用复制构造函数"<<endl;
! S, W6 Q) [9 w! c8 p. J! E        this->i=one.i;
8 V' u& `9 y$ V& ?9 J' o" G        this->j=one.j;# X$ }4 W9 f% q: e7 L& `
}" N9 a: y3 [: P
0 [" D2 a( F/ i" [1 s
CA::CA(int m,int n)
& Q0 f7 k, d" l  @. j/ ~* a{6 _- h3 v& n! S& D0 F, x
        i=m;
+ K" i5 l4 n4 K) k: j        j=n;1 p- Y  H- U2 @# p. W( ?- b* V
}
  t9 \& q* Y9 D" K6 s6 |" R: ?/ z  o! A& v* k4 ]+ K
void CA::print()
  y& H, e  I/ {8 |/ [{. S' g; M7 z% m, E
        cout<<i<<endl<<j<<endl;
0 t+ o8 z2 ?) n}
* l* f+ E, i. m) h+ G$ ?9 x
* z; `0 {1 `6 e; H3 \CA::~CA()
3 y+ x: U- }9 U' Y+ x7 w{
9 V/ l2 |9 N- N* n0 m- @4 f}# M# ]5 b; W. G, X/ ^; _# l
- y/ W; J" q+ s1 H4 }( C( A# A) \  C
#include <iostream>
9 d- Q- U9 i+ yusing namespace std;6 Y. X+ x/ P( [8 G. ^4 w" Q
#include "复制构造函数工作原理.h"
& e  t. }2 R+ {5 S0 D6 G6 V4 [int main(void){        
, t. H( H4 m  c7 bCA a(2,3);        & Q- {/ m* Z, c2 g+ G: v' z6 a. x
a.print();      
6 [9 f5 Y6 {; D' B$ z8 v CA b(a);        
& h: m1 b' L2 z. _  @3 a' T4 Ub.print();
0 X/ O7 \6 S! Y+ r; o       % [0 n; G( W$ I
return 0;! X5 p, J3 j  u+ O
}2 I- c7 w' t7 Q* u

7 M5 h9 D7 E& q2 t0 L) ?% a$ K9 k* L* X: \. Z. ~( q2 P
; N$ g% Q$ ^8 `/ o

  p, @- d( r* |" R5 L$ L
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:3 |. ~! U4 F" a3 {$ x8 u
1> 初始赋值时:CA b = a;
  s* z) k/ y! D. |1 o- I/ I2> 按值传参时:void myfun(CA ca);
( B* y) G1 h: K! m  |' ^* I, i3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
4 V. }7 D5 [1 s- g: q0 ~) X复制构造函数在以下几种情况下调用:- p+ X) X9 X3 {  r
1> 初始赋值时:CA b = a;
# a& V# `" i  b' n) N0 ]8 }) j7 `8 N2> 按值传参时:void myfun(CA ca);
7 B' s0 P" I# r7 y* L& ]. c
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-1 01:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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