鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 * Z* o3 c6 p/ M2 m( ~3 r
; \' _, U* x& S) z
class CA6 V3 p% o2 q% ~$ F7 |6 M
{( g# V4 K/ w/ E4 @! W# m
public:
* ~% w/ n8 f4 U) v3 j7 B; T+ y        CA();
) Y$ a, f( j+ Q) y        CA(CA&);
' `. X- N4 R' J: L        CA(int ,int );
% H. N9 w' S: _1 y" b        ~CA();* t* F7 T. E: R( Y6 Z. f$ T
        void print();
2 [, w' H. T' q8 f3 I& {# f& y5 b' ^9 s+ f6 c9 ~
private:
; ]! z6 Q. t' G& q! x. V  X        int i;
. O+ |% r. u1 y' r" `/ p% O        int j;! T9 Z% d* [/ \  P) B: A
};& ~* f: C% }8 e6 S( f

" U' s/ [8 i* E. S# {! \CA::CA()
  X4 \3 s, I% S0 D{
: Q; U! \# w9 X" m7 h}
2 G( L7 o4 r7 J
' e. |# y5 F* A8 aCA::CA(CA&one)
+ a# A8 _- Y5 R7 f& G0 s) X{
! ?3 N# @2 P& W        cout<<"调用复制构造函数"<<endl;$ I5 `4 t1 E0 k3 }7 P
        this->i=one.i;" w4 _/ Z+ R6 D# }
        this->j=one.j;# {$ k: K* o* s) {" i( h  K3 A
}# u% o7 |+ \5 R" ~

3 t5 n7 s" a# X8 _4 Z7 r  }CA::CA(int m,int n). U0 r  ^7 x3 [# k& w; g
{
. r( d0 E) r& K! \. R- Z        i=m;' i( F6 z4 Q& b, A4 t
        j=n;, {# {( }" z- Y) s" q6 p
}8 q3 `' r- Q  V% n$ r
2 [) b2 M$ r; P& v: K/ b) [
void CA::print()
1 h7 ]9 r+ B* d4 d8 |# Z9 J{/ m( U, F- c% _6 m8 _
        cout<<i<<endl<<j<<endl;
, l. R* A2 i3 T2 v( P- Q6 o: ]& S$ c}
( T, f+ V8 A+ [) j2 U2 c/ o3 `
CA::~CA()( S' \. }# n! A# N* J3 g
{
8 @' v" q( c8 q/ n' Z}
8 t  }! p7 M4 V+ O% [0 P; ?% W' j9 u( l. _% R9 F
#include <iostream>* N: K1 O; Q. O+ k3 \. d0 S5 l
using namespace std;
& K. Q" T/ \1 d1 f! }  ]2 s#include "复制构造函数工作原理.h"
; u! L6 }, a0 `$ _" h1 L' f' eint main(void){        7 ~. O2 n& q: K( p+ \9 U, b
CA a(2,3);        ; f. q& S) A5 Q1 ~
a.print();      
6 k; N, N! M: W2 |) P4 I CA b(a);        
. [; L- U9 J2 k# Cb.print();
$ T5 g* S5 D- x: l5 G- e       ) O8 f  {: G5 c; ^/ s( j
return 0;
, B9 m2 w; G) E' D$ E}9 G" ]' K. y/ o! ~# n" }9 ^

- n- n- R# g" v2 i: Y6 L7 {: q$ Y% W* ~4 O. a- H
( I& B# k/ ?" Q4 L0 Q

! G/ |. `1 g4 d8 H2 s# I
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:( [6 B4 ^1 E( Y% {3 N7 M
1> 初始赋值时:CA b = a;
  Y% o% C# ^' f* V4 r2> 按值传参时:void myfun(CA ca);
" V( K2 _1 D  t. B' H+ |. o+ L3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
7 |- f% K: _: y6 x0 O
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-9-19 01:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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