鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
3 c" L+ J6 C* n2 g- h+ x' Z5 r- x1 i" p4 ?0 R7 o2 e. s6 A' g/ l
class CA
$ |& S" O5 J3 p; Q* ^{
* }, m* a* w, w) [: @# M/ Y+ Ppublic:$ \' G$ B+ a1 X0 w6 Y3 f
        CA();6 B5 Q+ C: \6 K( B5 o1 p& Z) [
        CA(CA&);
; V5 J3 ]; b' f' [# B/ a        CA(int ,int );
* }4 ~7 |' G% E0 j* [8 A        ~CA();
5 }% C. @* o+ M& J        void print();
# _; C- f+ W9 n, h% J1 M6 t" E2 F2 b0 C
( e+ |" `- M  Z/ V' ^( N) Eprivate:+ F' a; l" p# F' G( g. X+ X
        int i;
6 l! e1 N5 F+ J% q( X* F        int j;
; L9 w0 J. |9 ]7 `};
8 n% M7 b8 {3 g8 o2 h8 ?% l7 o+ ?3 m) M3 i% Y, T
CA::CA()
' w4 x2 `9 u( _# l" a{
! d* `  t8 ^8 s) _. \}
( p$ p! ~! |( F8 N# n5 y* u
7 `1 h6 l% O; I, L& rCA::CA(CA&one)" J8 V/ _, y7 S; b
{  w( `( o4 J8 O, I" l& j' q
        cout<<"调用复制构造函数"<<endl;
4 j  T& @  a, }/ @/ N        this->i=one.i;+ q' C# T# @+ q
        this->j=one.j;4 s/ G5 L$ r2 @: M
}8 c' v! t: W7 c/ `8 r2 d

. T3 H( a% ?. I( o  y8 ZCA::CA(int m,int n)$ k* I! q, W5 o8 I$ Z" O( F
{$ A! p+ |0 s0 Y# @
        i=m;
- g3 F* b0 M7 ^/ k) {: @        j=n;( G6 k8 D! F$ g% W
}4 K6 X5 H) q' ?' Q
7 ?+ x% i6 w# \% ?5 H& C
void CA::print()9 A$ z( z# q$ X( L- h
{
+ t  I: p$ E1 z+ S        cout<<i<<endl<<j<<endl;
- R: C. e4 ]' Z# \0 ^) \+ A}; e" G* A$ G: [( t! d0 b4 O/ x; ?
$ z. `: H+ n5 [" b2 `9 t/ G
CA::~CA()# o* [' U* ]3 J# F7 f
{
6 j) m' c7 s" Q4 p- |}8 N: `. r' p, @( K0 |, G% C

" O$ g3 X, L* J0 r/ r7 |#include <iostream>
2 L( M3 Q$ I5 ~5 Busing namespace std;! r8 i0 k( E8 j; j# l2 ~5 U: \
#include "复制构造函数工作原理.h"" i$ |9 W* y" m& r; Y9 ]
int main(void){        
1 G( H8 Z7 ]' z; Z4 b' I; xCA a(2,3);        
* R1 ?# x8 W+ i3 U+ s. r9 Z$ U4 Ua.print();       + o4 J- R- i' l: S% {
CA b(a);        6 B# J' G, C5 S; ?
b.print();/ b- e5 A8 S" S
       . F2 u% \+ m: c# H
return 0;
5 Y, C5 V2 |5 ^, ^1 `% q6 x}
4 q* X9 D/ {! ?/ t  i
+ Q" y: V7 @- p6 P$ F/ S
5 B: d! `- `' q
% P  m0 x2 B  w
4 U$ q2 J& _2 G, q5 W( K, T
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
/ S% u+ z  `0 N1> 初始赋值时:CA b = a;
5 l; y& c* N7 {! \2 g, ?2> 按值传参时:void myfun(CA ca);
( M2 ~+ i$ L. Y, \" e8 S3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
; W! h' W" m  ~( I- o
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-12 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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