鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 p, P% U" f- |- T2 h. T
% _/ X2 M' R: _  `class CA
7 C: E: k& \& B& p/ r. l+ P; c{* A: `  W$ C; r+ ~" I4 h* z: b
public:! ]/ N0 `( }, R/ y- ]
        CA();
; F& h! C: Z" o& A5 }+ ?9 J        CA(CA&);
. [' O7 m% j# K9 P( d+ w: k4 H        CA(int ,int );+ P; e( K4 [& U4 a, T9 n# k
        ~CA();8 @5 {/ e1 p4 U# F; r  _
        void print();
; C9 |3 ]1 K4 H1 a3 G) C& ?& [+ A6 z3 h( d3 h
private:
6 @  @# D3 S( m8 ?8 o& E        int i;9 n# l% R. V$ h% W( F+ ]3 y; _9 e% Y
        int j;
, x: K1 k2 g, @5 d: ~};
2 _, k1 ~/ ]( M# ^% D6 N6 ^7 }9 A$ a- a* o! K" Q; g2 g; O, C
CA::CA()
& l; D% v6 h- f4 |3 q$ Q' A{
2 O2 W+ ^* X4 E+ m) Q}% i  m9 q; _# @3 e! O

) J4 M4 e3 K9 t* XCA::CA(CA&one)
' ~2 t) A! @0 z4 i( b, ]/ [4 D{& n3 L; c3 e, u8 X# b, l
        cout<<"调用复制构造函数"<<endl;- k* j, Y; }/ [9 w1 i
        this->i=one.i;. [, ]9 L& \. [
        this->j=one.j;( v2 `4 v0 n6 i8 W$ S6 w
}6 F" R0 x( t0 i# O  n3 R

4 D8 R4 V1 H. `; Z, sCA::CA(int m,int n)
: S7 _8 @0 K' |5 G! ?2 X{) x4 g+ ^8 X% H8 E# E
        i=m;: b# O; P% A" O8 R; R. f
        j=n;& j3 l. L0 u6 v
}
0 L& |  v+ d% I! Q
6 l8 `2 Z( L: u2 k0 yvoid CA::print()
* I- y$ L% M7 A- n4 |: d; k+ T! c" c{
- \# M( Z; d& `' g4 n+ S        cout<<i<<endl<<j<<endl;
) A  C6 u! Q6 l  z4 ?" [& J}
- B. G$ L+ _- b) e0 D+ O" V( l) S4 I5 z  q5 u5 h& L
CA::~CA()$ H. D6 \$ n: K# }/ k6 `; Z8 |7 w
{5 F. n6 T- m! b7 r; G8 M
}
) C8 N6 Q2 l6 e% w& A! N- H! H0 |7 u6 i! [
#include <iostream>2 ]0 |! u1 |) y/ M/ j2 c9 I' @
using namespace std;( R: X. w' H& r' |* i
#include "复制构造函数工作原理.h"
, f( {# S: i, Z; P7 P# b: k# Y3 Zint main(void){        
+ \* ~6 h$ F$ p3 ^( Y9 yCA a(2,3);        
! u; W' @& G9 C+ l* p# ba.print();      
3 f/ {9 N$ E5 T* ~ CA b(a);        
. D! @, S4 q3 V1 `- l# Ob.print();
- c/ S; q, D* U$ \% s      
" a! A" y2 A1 u: m1 O" C1 G return 0;) C8 {$ ]( `' u8 X7 r
}
* E1 T" }0 g. I# h- N, n
9 R' T' v8 V* ^4 |4 J" C) \( |9 Q% `
' g% j" @" I3 h8 i5 B
, u1 u. n& u' u7 Z  |
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 m6 Q  m) a+ j1> 初始赋值时:CA b = a;( T1 F1 N0 o9 w# b' g
2> 按值传参时:void myfun(CA ca);+ |4 l" |6 u: T! l, U' m
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 I* L- p5 }( b( s. p1 ?/ `. P$ U  Y复制构造函数在以下几种情况下调用:5 W- t/ g4 p) [* {! ^. ~
1> 初始赋值时:CA b = a;; e) N$ }2 w- P" H& v  Y/ W  Q
2> 按值传参时:void myfun(CA ca);

- n8 c3 z3 F( M# }2 s3 o& D第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-16 15:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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