鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 * I+ p7 ^0 _( u" t" B8 O; E

' S- }/ S! }$ S  j( p4 Fclass CA
; p  ], @9 U2 _+ L: I; \{
- e# _' f6 S  ?1 f; `& C, D& L/ Fpublic:( d0 ~& `; ?+ Z# [$ H2 u4 N
        CA();
# G. ]; {! t7 J6 s7 D5 r        CA(CA&);
. G5 C, n/ C3 {        CA(int ,int );
1 q$ z3 ^" J( L  Y7 @) T" b( @        ~CA();2 K0 Y" i+ r  `, M+ [0 |6 m
        void print();
& ], i" o( [3 z" |  z/ r, Z- x% i; B
5 \6 f, o; S3 J; |private:: M' Q$ |7 \- @# `" m
        int i;5 f3 T4 a$ M" I5 J6 Y- z0 p- c
        int j;! E- Y3 R6 x! m: B2 K, L
};8 y* F; h5 e  o
, ?+ m$ y: g: p2 B  N
CA::CA()
: H0 f( L9 G; S{( F/ ~; {9 J/ B6 ~+ S' o
}  h1 L/ S' J/ z( @8 h- k4 P" B
/ F; `/ P7 c5 F1 j  O" @
CA::CA(CA&one)$ f! n3 O3 S: a
{
; P% @. t& {, k/ |; f        cout<<"调用复制构造函数"<<endl;
2 r7 E* \4 @' x! @0 y, ]0 c        this->i=one.i;, n' k2 q( l  W0 T
        this->j=one.j;
7 V7 L8 l" a( q, L3 I3 |( b}
. `* `5 D1 a/ @, m4 J1 d! @9 Z% H0 R4 c5 Q& I* {
CA::CA(int m,int n). X* A- x$ B- c5 s- Y
{% s' ]) O. R; N! B  H. ~
        i=m;
2 {6 r& ?  P; X; M* f; Z        j=n;( o; o0 a. B; G8 g* W% v; g! [
}, b: T+ E4 [$ ?
% S/ `( T# [* Z" Z3 f' D: ~2 W) Q+ Q# ]
void CA::print()6 w; b8 F7 u$ C5 _4 s
{0 L1 [( P5 p9 p0 E4 d% d" u. p  K
        cout<<i<<endl<<j<<endl;
' ~& S+ O2 F& e+ m, r, R' j}
0 {2 i, U: R3 N$ D7 L: Y, |) Q, u9 q% l. M
CA::~CA(), d, ^+ _7 A, F! u
{6 q( h# T$ a7 B; u+ w& U
}. _6 g3 a, |% f/ Y! a2 y

. |4 N+ [2 ~% u6 V, w/ a0 W* l9 J#include <iostream>
$ T, q8 S# o: g% Rusing namespace std;
5 y7 }! U2 r. B  y$ @#include "复制构造函数工作原理.h"1 t: t. v8 c  y3 s  w
int main(void){        8 ^7 F& Q5 G9 T  b3 s% C: A6 Y
CA a(2,3);        
: ]8 e- Y+ h6 f- `a.print();      
9 c$ K* h/ @6 r2 s, ?2 s CA b(a);        % w& Z( t! k" w; H8 b! G6 f1 T, T
b.print();
( f7 n9 v& K! `, y2 u6 H      
5 y3 R6 w% ~9 `. \; c return 0;) C! y( E5 b+ W8 b9 z& T. y9 ~
}
/ X! w( s- ~( s( E2 @5 w
4 b/ ^" T3 O: a: Q/ C2 q4 n1 B, p' D% v% Y: R/ ~2 Q
$ n- y4 y0 F" r) ?% e5 x6 s+ E
/ j9 A- S: E9 T3 [( M; @4 {5 S* _6 u
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:% W8 t4 a$ F" w% R* _4 e
1> 初始赋值时:CA b = a;, e; ]& j4 B! k$ @
2> 按值传参时:void myfun(CA ca);9 h/ S% ?" N( v3 \* w$ o
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 4 n8 p& k4 P5 K4 o; d
复制构造函数在以下几种情况下调用:( ]) Y- B: Q7 r+ O9 _- z3 {
1> 初始赋值时:CA b = a;
* r1 p0 R) l& L8 ?- |; T2> 按值传参时:void myfun(CA ca);

3 b1 @( b' o+ i3 o, w第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-22 20:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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