鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑   O  W  [5 v7 U$ e  u& J
6 |9 \2 J  |% j# D* q) R1 ?$ O# T
class CA
  M- p$ o& g" n+ Y2 R/ j{- ?1 e! t! \5 r8 Z, A
public:+ U2 w( t9 J/ [1 l! r/ F: f* N
        CA();- ]+ D& P6 r1 s0 v' m' |
        CA(CA&);
; r. r5 \$ P' U; A) K" e0 A        CA(int ,int );
0 W" t! o0 n! `        ~CA();
3 }  @9 `" T2 w; X) S( v        void print();
5 P  x/ K5 e* \* f5 H1 E2 k# {! z8 E/ b- O1 I
private:
( l2 k$ h& q: E9 w, `. E        int i;
& L$ d" e4 f# h  K0 J6 A9 L4 }        int j;# t, P. _) ~( h
};; |+ V5 r0 b0 y- p1 t, e/ Y
0 `+ d2 J4 J/ @. S: G
CA::CA()+ k3 d' r* C+ C* ?! ?; t* g
{/ @4 O- V& w& Q2 B* \
}
: z; H, m% S% L9 X+ M
2 J! L& h$ G" Q  F/ jCA::CA(CA&one)- y1 i; j3 o  P$ R# d3 K
{
$ j% t/ m" t- f3 U; N% {! |5 [# J! ?/ U' Y        cout<<"调用复制构造函数"<<endl;- f: ^% a2 V5 c" Y  `8 v
        this->i=one.i;$ M9 w- x& W( A
        this->j=one.j;; O8 G& g* E2 `; ~2 P  \
}
8 s+ V. ?  ?; K3 b2 F8 p6 H& Z! j7 g. J: w- R( d  J7 ?
CA::CA(int m,int n)* z8 I& F& @* B2 ^4 P, I& }
{$ q+ ~+ l$ a  [5 i& J4 `
        i=m;4 C% u8 J! t( ~" S/ \+ c( \
        j=n;
8 k% A7 a# @) Z. q3 h5 ^3 O/ W! c}
! M; |& F  Y) \* c9 A9 r) k0 c/ ?; [, f. }" j
void CA::print()' T; W$ f; F$ O4 Y# H. i
{
4 Q# q7 u6 U7 j8 e3 M        cout<<i<<endl<<j<<endl;7 Z0 n  K" \) O2 D
}5 a0 f! x/ `0 `

( f, l. V" c& C& J" UCA::~CA()
; q; V/ o. n6 r6 X! O4 ^{
( j: h5 ~9 i' p8 E  q% R# z}4 Y( {$ j, x" `6 }/ V
0 h, E  Z4 ?5 b$ G
#include <iostream>6 Y, Q$ [4 m+ a5 l
using namespace std;" n6 v' g, F3 x. S5 l  h# _; h
#include "复制构造函数工作原理.h", u# ^7 J5 d  Z: P( n; j2 f
int main(void){        9 A; V* T7 b4 \6 f* a( K$ u
CA a(2,3);        1 ]* p* i% O0 ~" Z, P3 z
a.print();      
+ p7 C' h0 y+ `2 B' E CA b(a);        8 y8 V" I" `) B: U) X$ u
b.print();
2 h! V! d+ p& F( p/ {  U, C* S) R( ~      
* {* D# L* K/ G return 0;
* [+ e8 m% y0 n( b7 W}
" l4 }, m3 f# {9 O, k& K: T3 |2 u7 |' V( p- _( z) Q/ `, e! d: ]. u

0 P7 I# F. @/ o, M- \# g1 Z7 U$ |+ o) Q& l) w$ k

9 R7 B! M3 C6 P( A: X9 r
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& {, s, T* X) U+ X$ r1> 初始赋值时:CA b = a;
* n8 v% ^8 t' l. f2 l$ L" s$ J2> 按值传参时:void myfun(CA ca);# k8 c" `% B) {  q
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 . m6 q# \' n0 e! q# z
复制构造函数在以下几种情况下调用:5 U: `0 `: k8 ?- j4 a
1> 初始赋值时:CA b = a;
  m0 J# @. D% h0 u* M  Z! p6 Q2> 按值传参时:void myfun(CA ca);
+ Y) T, \1 ~1 K
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-4 23:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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