鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 . G7 v. N! A# w- [: E7 Q: [
0 O+ d( O1 k$ M+ A& {
class CA
% E- A) U9 J0 @{: ~7 A, E0 E) A6 X/ \
public:: P1 d" v/ j" ^& }
        CA();
+ f$ m* j& A" Z# v3 D        CA(CA&);" t& K0 L% M& z# ^, T
        CA(int ,int );' V1 D2 q5 \' L
        ~CA();  l; v' s0 _0 h4 X& Y8 M; l3 x
        void print();
* |& {8 a' a, Z5 M" @
8 c7 f5 V! ~+ Y1 w/ B. zprivate:5 @( A; ]0 n1 o+ |5 W. V/ b1 C* P1 }
        int i;
3 W: Y- E, t' [: @9 Y9 E        int j;
1 p1 g  h) B5 |+ P( o% g};' R- I0 h- p- v& R

& e0 v" [. }7 x5 t$ _* O7 BCA::CA()8 T+ O5 t3 P. T3 b- U; p/ O$ E
{0 m: a# E1 @6 E7 K6 G
}4 l1 ?8 O" Z& i1 \! q
: Y5 e2 [: D9 }) g
CA::CA(CA&one)8 t! F6 E( E# |2 v: k" ^- F
{! @) H7 h! x3 g, m* C' G2 p* j
        cout<<"调用复制构造函数"<<endl;% G2 b; W" U0 Z, [0 n# m5 ]
        this->i=one.i;% C* D  |' h) l1 |2 F9 G
        this->j=one.j;/ {# L' J0 N9 G4 y7 c; l3 i$ g
}
0 d. _' ~# b' o! R
0 J. z; S; p# F' QCA::CA(int m,int n)
* `+ y9 r0 Y/ b+ G2 \. t, q{
" s6 M0 Y7 F: ^% n        i=m;+ |4 \8 i' P% o
        j=n;* f9 f- j) e0 `) {) f
}1 {" F3 q8 ]8 X) Q) L4 D

( j3 [8 V2 ~7 y/ o0 Gvoid CA::print()
' G3 k1 X3 l: K& z. v1 y0 O{0 ?! n& ?8 Z0 J2 ]9 d
        cout<<i<<endl<<j<<endl;
) A/ j2 w4 h' ?: a}6 s. e) ?  `% k* H0 O. K

0 F& I8 s, D5 ]+ ^- q3 p5 [2 ]. L* a9 wCA::~CA()- V# B. k' B3 i
{
" Z- `! h1 h: M( u4 `1 ^}4 Q2 j) @+ G) Q* t

8 }+ y$ L$ c0 x& y#include <iostream>9 n6 l, R+ k" o  q- S9 n$ c& N
using namespace std;
! `: I( d9 t7 m8 j#include "复制构造函数工作原理.h"# i. U& `9 e$ o; A% Q2 J- O# M
int main(void){        & |+ u/ F- Z" t& B& M  _9 R
CA a(2,3);        
9 {* [1 a. v* x( p8 oa.print();      
2 Z. Q! C7 W/ Q8 i. U+ \ CA b(a);        
/ M: w& i0 V/ k0 x" pb.print();
9 a9 X9 ]- S/ M( Y      
/ F1 k, u! Z! ?# L$ V% [# n return 0;
5 u6 y, z) |$ b, W( U$ d/ A: y}
0 I6 X- Z% ~6 a% s* ~. q2 s/ ]: x% s/ c( U" p& r

; @  b8 ]- O" r$ [0 w" \
* B2 G8 V4 K4 s, _9 y6 I
" Y$ s! K  g4 |2 m  t8 T
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' D' m0 o9 D: g: n, f# }
1> 初始赋值时:CA b = a;
9 X# e5 `, `& F2 d" i/ |2> 按值传参时:void myfun(CA ca);  ^8 i3 x+ [. X  x
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
* K# \3 T9 \2 z/ T, B  N7 h复制构造函数在以下几种情况下调用:( V0 Z+ ?3 H6 x0 S5 [! e+ B
1> 初始赋值时:CA b = a;
# `+ C3 j- V5 C7 Y* k7 o2> 按值传参时:void myfun(CA ca);
, o; n+ D, y+ r- R' R, t1 q
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-2 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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