鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
5 {3 N! s0 c% C2 k  Z0 `" g
! n) T7 p; @5 B/ zclass CA
. X; @' n# k9 K( i% y  c{, ]& U0 l; t+ w3 d, L9 s7 N7 L
public:. M" w" w6 W( z$ C  s# x! U
        CA();9 P$ {5 g' g* d! a+ z
        CA(CA&);" f9 M4 V0 y8 M7 [5 y( V
        CA(int ,int );
4 h1 Y, v1 f: ^        ~CA();  Q9 ]. h. V2 h$ s% Q- a
        void print();
5 V* C  W" C' T0 ~7 R3 C3 [6 T) \1 B4 i/ e1 S
private:
# x1 ^- c' K% x( p, e        int i;5 v4 M7 s/ Y# x" b5 u/ P
        int j;
) I5 E1 J& |; U* B, `# o};
; W/ ]2 m6 A) q; A( \0 u( l" w% F) Q, E1 V, o% e
CA::CA()
- L7 A+ k. T# v2 y{
. `+ C& j- \  s  }6 d" H) b}
2 M/ n  s! V/ E& j3 \9 i+ b9 R) A5 l3 D
CA::CA(CA&one)# s" b* V( r+ w' Y
{
* d& i! l4 Q' Q/ Y; I6 J: K        cout<<"调用复制构造函数"<<endl;
/ L" o. }9 k; [' H8 R        this->i=one.i;
! B5 _+ S$ {0 J) R3 y$ t        this->j=one.j;$ i+ F) [* I( }- M7 k" }  {, X4 n
}3 f0 `5 x0 N, C  T  \3 Z& U% `
; G" n6 ]9 g* T6 C; j
CA::CA(int m,int n)% w6 u" Y7 i4 D2 R% E0 M
{. I' x& d. v0 J5 d2 ^
        i=m;1 c0 K% _) Y. D3 K1 _7 M3 n8 h
        j=n;  A3 M4 `& N* s2 C
}' ?+ C* @. g4 o) B

/ e6 H* l( z8 I! Q9 v9 B1 xvoid CA::print(); I$ l: b* ~, @' a! @8 Z
{5 k" {, Z4 J% O' @0 B! ^
        cout<<i<<endl<<j<<endl;
5 n9 f: F+ e" a6 A9 `) h. p( X}
9 i% V4 `0 y3 {* m! c
! |* l; _  M: C/ _0 @CA::~CA()
* s) Q, j7 C) O, K7 {8 a) a{& l$ @6 M; g* Y4 P+ c% N+ {
}
# v) t0 }4 X+ I! x) r5 x" G6 n; v% B0 |
#include <iostream>0 ?6 _; `" J1 D+ [" C6 R
using namespace std;
+ N5 Z' P1 r) @( u8 K" j#include "复制构造函数工作原理.h": `  |. p, |8 V: ^
int main(void){        " i5 q3 J: W7 F- \
CA a(2,3);        & e& A" n) K: K" F, F: d5 W
a.print();       / q4 E* b4 @6 R! N' T4 B7 F
CA b(a);        
4 B5 z# e# _- i" b8 ib.print();
  }* T7 f3 Z) q* d; D0 e. D       ) E' D  W2 U8 s9 E6 S4 F
return 0;
0 L# E5 H. a6 i2 X, Y$ F}% ^* c- q9 Y0 Q, p
: w/ e' N, y& ~4 N* a4 h
2 N" q" [  H2 o3 u6 @- }3 f
. }. F! n7 z5 g

& g& m0 S9 J2 F6 B1 {5 w
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:; R* _* b4 \3 F8 A' b
1> 初始赋值时:CA b = a;! [' Z- i  z# b% P
2> 按值传参时:void myfun(CA ca);& m  {* F  V5 R2 L/ P, i" K# R
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
$ U! i# v" T; k) d* l& L" K
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-9 10:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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