鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑   c# S, J$ q" ?  h+ u

/ J! L6 m, T2 o6 R0 ]. Iclass CA' V7 q! E+ V) U2 B* O' w
{
8 o) }: e' N, Opublic:3 I. T5 V. g1 ^0 q" G8 p( H0 S
        CA();
3 d4 {3 @- l6 h$ Z- N4 W# x& X9 Q3 j        CA(CA&);
/ D) ~  K# s# o1 e' h$ W        CA(int ,int );) p$ L% k2 A  C, z9 ^
        ~CA();: Y+ {3 x5 C2 o( y
        void print();
( A; V5 H6 d8 B) \+ p; U  P9 g0 ?( P4 p0 }
private:
) c* O5 x( g+ S2 B; G        int i;
6 n/ u: n+ i/ ^) T5 I6 U        int j;( ?& A; ?1 t( m7 l/ M4 W8 t! I- E
};& V( Z, s! {% ^; `" M5 p
/ s5 D, c* G. Y) O+ M  y
CA::CA()  F; a5 B* a- \0 n
{
' c: a3 U7 M% e' N}
' y0 Q8 {* \1 x) q8 N
, m' s" i: Q' N3 g% \8 D' GCA::CA(CA&one)
; G% X( U" G- F1 P7 i0 ^{
' O; z4 x3 \, Z9 m2 @        cout<<"调用复制构造函数"<<endl;
: _4 X: V2 k3 U4 T+ W  Y        this->i=one.i;- v! Q  G! B' v/ x
        this->j=one.j;( Z# r, r& j9 `  t
}
$ h' ~) u# ~# t' f+ P8 }, Q
& r& ]# f4 V, L* Z1 |8 k3 eCA::CA(int m,int n)( V  G  C# ?+ D6 X- c
{
( f& u+ x7 ]" W, ^3 T' S$ @, z+ ?        i=m;
! l1 i0 ^! h( o. c        j=n;
8 c: L) l8 r3 u8 Y  _" ]* j/ G! V}6 b% \# ]# Z) O0 w& G# T
: r, G7 R8 Z) R3 p9 }
void CA::print()' Q; r" N& U% l& j. x9 B1 |) `
{* v; ~5 L9 O/ r: P
        cout<<i<<endl<<j<<endl;1 h, z) Y# C+ |. D/ x0 h' T4 T
}6 l! x: }7 W! A& S( }, f
* ]% k0 `% h0 z# [0 \
CA::~CA(): s+ Q" Z# G: P, T" t: F# k
{" E* h: y( l! o9 a4 P
}. z. J& ^" k7 [- X  F8 m* N5 `
0 L! y$ C$ o* N8 |8 [
#include <iostream>
9 p4 n% o/ k. R5 Xusing namespace std;1 L) [0 @! x( A. V0 g
#include "复制构造函数工作原理.h"/ ]* q" Q* A  D7 s! \& A) V- [; v
int main(void){        + y: P! ?; k2 j7 J  J
CA a(2,3);        
/ I+ I' j: e7 o2 |# a' oa.print();       8 W; n+ i# L7 q5 J6 l# E3 a
CA b(a);        * @8 Z6 i  P) [! [) U8 I
b.print();
# z) c, ]: @- D3 s" K# i3 D% s      
5 v/ ?0 z5 f" z% E! r return 0;
+ L& P( i; r+ N2 z: U5 v8 Z}" W1 T5 D# E/ u. @8 B4 n( g
7 R$ u- ?. \8 b9 ?# C- {

. H# Z6 \+ j3 c3 E; G: u7 |1 a% S% x* ]5 [7 ]
" m  n! y; q( r, x1 _
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:! G  O8 a0 P# p% m0 G3 x+ k8 G, o
1> 初始赋值时:CA b = a;
" h9 B3 {) u# g- m( S2> 按值传参时:void myfun(CA ca);
$ ~; E  G1 k" E% e# k3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

- w: t1 p6 _, S- ?# [; F( w第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-5 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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