鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 6 G0 g9 x( y5 C5 h! d1 t2 O; U
4 d  V9 W+ a, a" T6 i7 T
class CA
0 G' L1 Y' D# k- u: H( Z& l/ r{1 f+ |3 ?  s% L5 Q, B% X
public:& b- d3 e/ w; h5 _! M, P4 |! c& U( L
        CA();
# t$ F: z' C" G0 }+ a& ?, ]  z* r; G        CA(CA&);
  R1 N8 C. r) Q/ Y        CA(int ,int );
  E) t6 Y" r& ?% @, i* l" j; s# X' u        ~CA();
0 ?* z) ^% K6 p" P5 M8 J        void print();
" l0 g3 C9 u+ l) k, Q
, f/ E$ Q$ d& \- A8 a+ J- ^private:% y. K+ Y0 y& n2 l4 s  ?" e1 b6 U
        int i;! n7 a* s; u$ O; b
        int j;% i% L( K$ q' n% _0 t- w) R& c
};
# J2 W! C& V% I( ]( s* R5 L8 R# A1 Z; r# n: ~2 O5 a+ |
CA::CA()
( ^  N) ^9 @  S- O/ }8 {# k* Q{, i" M5 ^- q( ~( o0 T" l
}+ }  R+ w$ b/ v1 }7 D4 b
, L' A& a8 g2 r" Q& ^: n# s, [
CA::CA(CA&one)
. [/ h; L6 D1 n. P% }7 M9 n{% _& u* B% b/ Y4 D7 d
        cout<<"调用复制构造函数"<<endl;$ Q* b' N) I& X+ C: ]
        this->i=one.i;8 e3 {$ a3 ^$ }9 L, _9 E8 K" k0 `
        this->j=one.j;3 }4 t" `1 V% p( ~
}, v6 t+ r7 d# j" N: E7 ]* Y, B
+ D1 b( h# _5 }, c% R
CA::CA(int m,int n)6 s7 a1 P! T% Z3 b, D+ [# ]+ F9 i% H
{
7 o% y2 k  [" Z, Z0 q4 I        i=m;
/ l& q& ?8 P# O% _2 x* h        j=n;8 @, R4 _( o2 _' u: v5 W% w& p
}
3 {5 _  q5 ?! N4 Y. d& W% G, I8 t3 j: ^$ }* }) `
void CA::print()
9 i* q# }7 l/ L{
) d) g) \6 b+ }1 R* I, V( O        cout<<i<<endl<<j<<endl;* ^5 g+ k. h# i' P$ {0 F* Z4 E
}3 Z* y* }- N& j# A
" U; }% ^4 |+ T& l
CA::~CA()& u8 U: u, G3 `: W6 q" Z  D* f8 J! r
{
0 M: o; d% _" N# z& X" {7 L}
: L; s, A/ v% t5 F$ k  y+ Q4 U# l/ B& j8 p
#include <iostream>4 r; i+ ]( G# }4 r1 x* T/ T7 P
using namespace std;( g% ~- u% d# I  L- d
#include "复制构造函数工作原理.h"
2 c: C. ^$ X: ~int main(void){        
3 r0 i$ `4 j0 E  a) p; R, [3 e( ^CA a(2,3);        
4 K+ T& o9 M) k- t# e" \' j9 `% V5 Ta.print();         A% Y* ?: x* C8 f; g! y& z4 ]$ `
CA b(a);        + |  I& V- s- L4 O# v
b.print();
; |; d$ m6 I/ l& R* U4 G       ; s2 D, s5 c- z- q/ m
return 0;  v; {1 h9 {" x5 Q/ \
}
/ Z1 l( V0 i1 |7 e4 ]7 B6 d# f/ S

# h' O4 N1 r. P! _
; C5 g8 v. c: z  |* y! V0 }) C! o2 x5 W7 p
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 O" y( A9 L  g8 m: A; [
1> 初始赋值时:CA b = a;  S! X. y! j: j7 U) m2 }! q
2> 按值传参时:void myfun(CA ca);
2 w! U# x" ^7 F3 S. [" ^3 g# F3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 . h- ?( Q, y2 V: g3 ~3 Q" @
复制构造函数在以下几种情况下调用:1 q  c  c3 r6 @7 e
1> 初始赋值时:CA b = a;
0 o- T% w1 N# O/ F# N/ n2> 按值传参时:void myfun(CA ca);

( C# f  P/ Y4 N+ t* }4 j7 q- c第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-4 22:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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