鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 / R. B$ n- _% p

2 f. Y& n& B, L% K6 Xclass CA# X# \/ w0 `' V1 ]3 g
{! Q/ v+ k5 H% D' ?- j
public:4 \" p5 M; M+ d6 c9 |  ~0 `8 m
        CA();
8 S1 D% G# k6 k6 h7 g# A8 y3 D        CA(CA&);. n  F5 _2 S* f& U; |  E% E, f% @
        CA(int ,int );  s* ?! L8 j/ Y" r
        ~CA();7 N6 W" f# w1 t5 X
        void print();
; y' z6 E! W- j; S4 |$ K, _! I( ^, L/ ^" M1 p  l
private:. q; i. M7 j; G2 Z, d
        int i;
+ ?9 ^! Y2 o( \' N3 v        int j;
) Q1 c& b% K6 y/ E  ^) o' s% I};: J' }, k, J1 Q5 N% K

; a; \7 j! w$ YCA::CA()
' G- M% f) C5 J- b$ |{
8 k5 x( q& ~" b0 P8 z0 P}( _. K; F* C: h. ]3 A# Z4 p

% q! U- j: C. n. `CA::CA(CA&one)
6 k& g* |" @( \( |* M{. h9 r4 m7 @  G
        cout<<"调用复制构造函数"<<endl;) [" ]0 k6 x; V% r0 l- h
        this->i=one.i;
4 m. q9 Y! `, D2 v# s        this->j=one.j;
& C6 b6 n7 X9 \$ x$ m( X}
4 ?5 [7 ^# M7 c3 Z+ q: e3 r, o  a+ x* J/ h1 T
CA::CA(int m,int n)
- L* h- S+ L  T' k, m( ~6 V3 j& y{/ t6 V' S; H9 s+ l. o, z5 V
        i=m;8 I" y6 g7 t  n3 G/ b8 g* u
        j=n;5 i6 e; [. {- N* }2 `* E9 x
}
8 F2 M6 `2 \% o; z* W9 B) T/ |6 p8 ?' b# a% |6 {& {5 T! G7 A; R
void CA::print()
' J4 N/ E; Z. e{. K" @& G: j" x. O
        cout<<i<<endl<<j<<endl;+ y! c( Q+ W  q4 @, D$ O, m
}
' L; [' k, m  y! R" P3 p* H! z* I4 A$ F+ m% u9 h  l  D
CA::~CA()0 w' H7 D0 H2 X( a# Z) C
{
9 O# N1 ?+ d0 K6 X7 g}$ Z* T% @6 ^$ d5 B
8 N: m5 ^6 D3 Y' Z3 z2 J
#include <iostream>
3 O, u* \7 Q  ^# cusing namespace std;
' X7 ]7 C+ _: Z. P6 d1 X+ k#include "复制构造函数工作原理.h"
" U& p# _  e* yint main(void){        # t- W, n- p3 y7 w4 d
CA a(2,3);        ) [& G" e1 i% x# d; K* W
a.print();       $ u7 v- b% n7 m$ n0 K
CA b(a);        $ e0 v* c# A& N. _; l1 n
b.print();% m: `$ g2 j+ U2 M& g; v) C+ k" g
      
# b3 B6 V  U0 F$ O& W  u return 0;
& H. G1 c: O4 a# b. z}! z- b" e9 O) ~3 e0 p1 m9 D3 S
5 w' t' J3 H* u2 c1 p  s
, {* F5 a- y+ E3 D! [( |
6 j, @* I: [: v" W6 E, q, B8 r

$ P+ Q5 u3 X3 H1 S- {6 Q. j6 O
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:4 }6 ?* ^0 N+ \! G6 ]; W# a
1> 初始赋值时:CA b = a;
7 [! d# E* t; q) E+ e+ P' B2> 按值传参时:void myfun(CA ca);2 E9 m* [- y- n. t* O
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
6 G5 X( b6 h- f) o" z( v' Y. j复制构造函数在以下几种情况下调用:
7 J& H$ V3 L3 Z7 e! u- N1> 初始赋值时:CA b = a;" z' l% R' A! _7 Y
2> 按值传参时:void myfun(CA ca);

# J3 g, @1 C, K$ [! J2 u2 Y第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-14 00:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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