鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 9 M& `; `" R) Q- G% x( w

: b9 @0 \7 Q2 ^( rclass CA* Z3 U! [6 v$ \: d  F$ }: F. H
{
$ J% L2 q! c( U# K# Z' mpublic:2 K/ D( v5 v0 N
        CA();6 L; `. l% R  p) w7 x4 V
        CA(CA&);
5 C. f/ u, r( Y$ j0 b        CA(int ,int );
# @! B# z8 m/ J$ Q/ b/ p7 x        ~CA();
+ z+ K0 d" B# c: a, G8 ?* c        void print();# T" r8 {& z! x3 K$ [

3 _. f0 h+ ]! Yprivate:
3 N4 ?6 t5 M! ?) J2 u        int i;
/ b9 P7 A" B' t        int j;
, [2 Y1 |+ y' y; J/ M: n* Y3 P};
$ F7 A1 F/ N/ a  j/ v# l% l. m
- c: W: s/ B& R1 [CA::CA()- h" Q6 k$ \" C8 i
{6 K; |4 N. Q6 x
}
0 f/ Z2 F7 o" c- v7 N
, I0 ?; e7 s/ C  ?. \8 A3 E* h7 l& S/ dCA::CA(CA&one)
/ J+ W9 X; O3 m% d+ K- \) [# B{
$ O& u( q1 J1 o; c2 {4 U        cout<<"调用复制构造函数"<<endl;
" q- ]; y9 B3 o, u        this->i=one.i;! o4 c# r( z# J5 P$ W3 Y* s6 E
        this->j=one.j;
# ~8 \4 P; @- F& [" h! ?7 f! t}3 P+ f6 C# a$ C( ~, Y, _

" j3 B  z) [0 f0 ZCA::CA(int m,int n)2 m8 _# K& b1 r
{
' {# N# H: k! v1 Z% C( Q        i=m;
  V% p8 H# `3 }& R2 |' J        j=n;
6 [2 I2 N8 j5 h! C1 I}
" W$ }, a8 y4 M3 j: k1 ^
( I+ M9 `" E! F8 L2 c! avoid CA::print()
( ~8 s8 `% H, D" |+ x/ w2 \{
7 ^$ F1 i3 g0 V2 c% @, X6 R: h0 n        cout<<i<<endl<<j<<endl;/ }' `% ^* Z1 f$ d  d$ x
}
8 k7 p3 ^; _1 V& ]& q' w2 @& e# ?1 E9 s/ q
CA::~CA()
" ?6 _$ W1 w. H; G7 z5 Z& q- u) ]9 ~{( Z+ [* T& j2 i" i9 W
}
5 l. q1 [1 j% x7 U2 K' @7 L
8 s5 ~6 O8 \) _0 Q8 O#include <iostream>
6 q" y" x3 B2 \4 G: eusing namespace std;
4 a3 E$ T5 U8 R1 R9 f#include "复制构造函数工作原理.h"$ D! c/ m( M3 L' e' I4 ^  Y
int main(void){        1 m9 M+ W  H* P/ w$ E1 l
CA a(2,3);        , m2 ]4 a; Y1 \% K* e  `
a.print();       6 n& P% C" A) W7 z, `2 ~; r
CA b(a);        
, v0 L1 i+ A4 J+ `; G" }  `b.print();4 G. C7 H! E* d8 T- u+ I
       3 N+ c; F3 a( _7 P) @
return 0;
+ e$ {8 p6 o& a2 D! c1 x}
* J0 z0 g+ k. R* C  j7 M8 r3 y3 @9 R! d

1 x% }1 {) s( K$ E- Z
: a+ b# I. G  I/ j- O# J& [  D4 z$ I0 R) W  Y* a9 `& W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 }+ T5 O4 E9 P7 W6 I0 q: \) f
1> 初始赋值时:CA b = a;
* U' J0 W# {1 ]. e5 {2> 按值传参时:void myfun(CA ca);5 a) E5 r/ c7 L, U
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
3 l- {. k" d' T! n5 r! h复制构造函数在以下几种情况下调用:
8 L; n/ [6 Q4 `2 c- G& C( }' Y1> 初始赋值时:CA b = a;! H( x5 y" d4 f. `; Y0 k% |% }
2> 按值传参时:void myfun(CA ca);

6 @- X* K/ G* u+ P+ c0 m' r第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-12 01:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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