鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
  B  ~. v8 Y5 U0 @; M$ A9 a7 l1 i( y' L- |' [8 f7 n$ @3 o
class CA
% B) t+ \) {2 |% }9 j{
# [) e6 ^8 e: L: f! ^( s; `1 H9 Ypublic:4 ?! W) I( L8 \8 n4 k
        CA();% l4 W! l4 o8 d- `4 ]( ]" H7 |
        CA(CA&);
& D1 r1 O1 @6 b( n        CA(int ,int );
- K; M& |) D. V' f9 P! i- S        ~CA();; _8 U  t2 {! ?5 Y) G# n8 w+ w* i
        void print();* e1 ~) W( x/ F& G3 \. ~% j
' P& M; b/ j0 P8 Q( u/ @
private:1 z  X& M7 z% a) |, @& J! @) h  r
        int i;
5 l1 n! F% s5 x5 b        int j;
* S9 Q! f6 R2 i3 u0 w1 z( V( F};
; s* E/ w/ x) e& w, L  V( L
6 ~" D) \2 A# i& v5 E5 F3 ZCA::CA()) |- V; y6 |" m. G) p1 [, }
{
- K- D: V+ K9 ]$ b4 |5 n& O8 N+ _}: @. G( M7 r5 ^% Z! z! M
1 N; k9 C) S, P% ?
CA::CA(CA&one): B7 \/ [$ U! W  r/ E$ K) Y
{7 m9 p4 E8 |3 Q+ C7 a. H+ Z/ p/ M
        cout<<"调用复制构造函数"<<endl;
8 a& f& r$ U9 r3 ?- ^1 k. g2 y) r, R        this->i=one.i;
  H: b2 Z8 M" }0 v        this->j=one.j;' K* E8 k" i3 ~* T" V% k
}- e+ a4 r6 [, U! L

" K2 D1 h, f5 Z$ o# O; sCA::CA(int m,int n)
. f' R/ C/ x3 R3 i. o! o{
2 x' e7 O; u: p) Z2 u7 m$ v7 @        i=m;! @  q0 M' N9 B2 t1 x7 i# U; s
        j=n;# g2 g5 _& N# C* ]6 z  w
}! h$ `; X: r* o
9 w- M+ a2 u- Y. J
void CA::print()
4 p5 D5 _8 Z7 r6 m, A{
) e0 `& \( Y9 E        cout<<i<<endl<<j<<endl;
. K3 \) h) N! R  c* }5 O. U}" ?# c- @5 ^; x4 \) f4 d8 h
& |: n& b+ c* s! A
CA::~CA()) u. V/ I: `) Q9 w  G! j
{1 V( R( r/ U2 b" U* v" |
}
$ F- n' H) W% B: y/ K. }% E  B( F! G( c; c8 ]! w/ q! G
#include <iostream>
8 ^' I$ m! ]7 F4 O8 Xusing namespace std;
$ v/ f) F! p" @5 t) Q#include "复制构造函数工作原理.h"4 g; x$ V9 Q9 p
int main(void){        4 D/ q% c' ~6 A) q* e
CA a(2,3);        ) t  X; v, N# m$ e3 z9 I
a.print();         t( s8 r' U2 \( p, J$ k! Q
CA b(a);        
7 G# i+ L/ t+ h* u5 v8 w4 u! _b.print();
- z7 W! v9 j7 s- u7 K6 D8 H8 d       % O6 H! z' `6 w- e7 B
return 0;
% V* g: @1 g$ B6 }8 G}
5 Y9 f4 ^. q. J7 O+ S" X, }* a9 o
" T* `" F1 T1 V* p. D, }2 @. j+ T0 E- v

& D; o& D, _( l: [/ R
( t7 ]$ g' D) @- z5 I- a
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:. M# E/ I. [+ }
1> 初始赋值时:CA b = a;
! H  E2 Q% M3 @" N4 t4 S% {2> 按值传参时:void myfun(CA ca);
- a$ c  s& h& N$ A% _2 y3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
/ r' `0 y# N9 `7 e. L! u复制构造函数在以下几种情况下调用:' k3 L* B9 i: a0 Q8 q
1> 初始赋值时:CA b = a;& o+ v8 h6 U: g5 `3 c
2> 按值传参时:void myfun(CA ca);

: B9 V6 a1 s5 J/ f2 P6 ^; P第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-8 15:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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