鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 $ K: ~3 T$ m5 ~$ d; n  E
+ F/ p0 D( I$ d! O* l( x! U' x$ @
class CA
: ~" E2 O$ w0 u4 u0 @{8 P9 P7 \2 s) {1 h
public:9 y  C/ z% Q; h# U; x
        CA();5 P7 T/ ?+ M% P/ `
        CA(CA&);
3 i- W% N4 c. p6 `        CA(int ,int );& b; g& d  Z! l2 [4 K1 {
        ~CA();
7 B4 V$ K) D$ ^, d. Y        void print();/ L9 w% y. }4 J3 n) w# J) I" A+ F$ C
7 w% u. C- Z( c! X$ _# p( K9 n5 T
private:
& ^; c+ n; ]- C8 s4 p        int i;4 a: V1 G# |' ~: c
        int j;
: c9 p5 `6 t* v3 l9 r' k9 f};
  Z+ Z1 k4 I- A- N( s* ~  H/ x
CA::CA()6 K1 ?# q& P5 W  C% h
{
8 ?* G1 `; }& l( G6 f  o}
+ W9 K4 K2 T7 q  X4 D+ k+ n, H& W  A# A) R/ K9 @
CA::CA(CA&one)
0 I6 b" Y5 Q7 B, U9 d( E7 R- ^{
: m0 Q3 u$ t* z) Y0 n4 {; X$ j        cout<<"调用复制构造函数"<<endl;6 Z# o" t; O, M5 U1 @: R+ \- _1 P
        this->i=one.i;: X# \- B9 F* ]6 Z
        this->j=one.j;9 Q2 y7 J8 x! U8 K1 S2 g" w8 i
}& u! Q9 k4 |7 k# Q
2 w1 b; Z1 N+ @  V9 }' a  L
CA::CA(int m,int n)
1 @1 b" n% Y1 r0 H7 W1 ~( D+ \. j{7 T" D" V) x; @* O3 i# r( Q
        i=m;8 t7 K4 F* @1 ^
        j=n;
! E/ z; M4 `) h4 s% o/ A}
8 r* |0 }8 q) x7 m0 @5 y3 i( o6 J; h# J" S
void CA::print()
; Y+ o5 z, S0 A0 _, J' M{
3 E7 ^0 E& k& m0 u        cout<<i<<endl<<j<<endl;8 H) I9 j/ g* i) _
}
# }* X# o1 F' d9 ^+ B) @# {$ `! }) Z8 m
CA::~CA()9 O7 a0 q$ I9 n" {
{
; r+ q% m7 p! w. E}
. Y8 L8 T( Z) A# {6 T
3 s$ r: Q: A: o#include <iostream>
9 ~! w+ Z( a9 U) susing namespace std;. e! [& B8 M& E( t1 b' F
#include "复制构造函数工作原理.h"& ?& N# u. r* }
int main(void){        & g9 O% I  X: E0 t
CA a(2,3);        " r: a/ s! h2 Z+ E5 U  Y
a.print();      
4 P: X5 u- `$ R CA b(a);        
' O% R: b; f$ Y+ a+ a( J9 y9 Rb.print();
, j+ S! y3 |8 x$ R* M      
- J6 g: O/ J0 O2 `8 h# i return 0;
" @1 S& T) \5 a  t}
" L# @1 t9 q# @/ W/ m  |; z! q% f7 f" y& h, V! z- L

# x7 V0 }. z  L( n$ v* @
5 u1 }/ S0 _' g3 g" ?& h- n/ P1 b4 t$ o8 `
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
/ u, p6 f: s$ z9 L" v1> 初始赋值时:CA b = a;0 b% z) q+ w- @3 ^* o' H
2> 按值传参时:void myfun(CA ca);
+ F- g9 B' F! n9 g2 O$ E3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

2 M  v" W% H% S) u9 x6 @第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-11 07:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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