鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ) a, g: ~5 T) P: f+ p: E

: f. R6 l2 D" ?! L" d! P& d8 |class CA
  ^) k, H) S- f3 K* P- ?6 B) A: E$ A{
9 W# `- Q: x( J1 I7 Z9 Npublic:
: {0 l$ g  h# b+ y9 v% |+ V        CA();$ g4 p! s& m  I# ?
        CA(CA&);* V/ j# E2 Z2 I2 S8 l( R8 ^& S+ V* ]
        CA(int ,int );
9 C# m/ [; U3 B  E3 }* l* |        ~CA();# K* e* m" w, h% o0 \6 ?
        void print();
; \! `  b' b6 R2 J; O( ~( B) W2 m- L+ C4 t0 R/ c
private:
9 n% D2 D+ d6 B) R% d; _6 D, Q: `. b        int i;2 L* g/ |1 H! f
        int j;8 B  m# h$ d6 f* m
};
  U/ x, H' r, D
( Y6 U; I5 A$ a, {% U9 vCA::CA()
: J( h' {, |, t$ l. n0 H{
. L8 y# h8 ~$ u6 A( m/ ]" x}1 M- c# i& F+ J3 e# p5 o6 x
' x3 q# i$ W' y5 P2 u9 R5 v6 g6 p
CA::CA(CA&one)) ]* B) H4 x* [, Y% ?+ y2 X2 s8 w7 \
{0 A2 ?4 T$ j- A0 s5 R: d8 g9 W
        cout<<"调用复制构造函数"<<endl;
  c7 C/ q) S4 ?3 e1 K        this->i=one.i;
) f0 J0 V% t4 u. w# p7 f        this->j=one.j;6 w' P* R0 n  a% p
}/ C6 H  ?4 L' C( T9 U2 b0 u
" }5 N  q- w. G
CA::CA(int m,int n)1 q* u1 w& X2 w3 o" G1 L
{0 F4 ^# d6 h2 U9 f" V
        i=m;
; t2 y$ M1 h! ^1 x) \$ u( U        j=n;
# r+ z5 ]$ f1 X}7 Q& F4 [& r) O' ]* T9 I: S
7 J8 j3 X/ s; b, [
void CA::print()9 m* u9 h" D/ }2 o  ^- z% T, T
{7 _# l7 y7 A$ J7 h
        cout<<i<<endl<<j<<endl;
6 B3 \1 b) ^# E3 O# W- ~}
: y  z2 R  ^# J6 B) V" t. }* u. Q5 S. g% `: a5 b
CA::~CA()+ P+ f9 y' W. Y- g3 U/ R
{
1 F9 |, P3 i( [! \8 s0 Z8 h( A; l}
* x8 }8 f; j( D6 I' O  f# s) c; V4 ^! [9 t! a# \
#include <iostream>
$ n, z- D' T  q/ _. V* fusing namespace std;
5 M4 [& P( Z  H* A, H+ _" J#include "复制构造函数工作原理.h"
5 W7 g) d5 ~: X& c, \$ O& c! Z1 g  iint main(void){        
) c8 N2 J* \, U% GCA a(2,3);        / T; |- w# P& _. I
a.print();      
- M8 K' v* L5 l+ N7 C CA b(a);        * z+ j6 C- V+ i8 @) J8 \; M
b.print();$ B8 h+ n7 y- e' _- [
       + |$ N6 e, f3 Y
return 0;4 f* d- @+ T! p
}. Y) \* ~$ a- _( m2 J) g0 z2 s. V

4 B+ u3 b' v0 u# u' T2 ^- \2 I* D- s: `) ?, ]9 W3 P
$ K# D9 E/ q; e1 s0 @3 }& {7 Q

# R" v6 F* R" Z1 b* r
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
+ Q# N: v9 B. ]" I) E1> 初始赋值时:CA b = a;1 b& G' @# L* t- t" \' q* g
2> 按值传参时:void myfun(CA ca);
5 E3 N6 v  J* C4 |3> 函数返回时:CA myfun2();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
$ w2 X% I% m9 S# U" D! d# z复制构造函数在以下几种情况下调用:4 k  q6 I( D5 [6 C* M% [1 v
1> 初始赋值时:CA b = a;
5 {& Z  h" q8 o1 p' v3 w) ~; I2> 按值传参时:void myfun(CA ca);
0 l2 W' D4 Z4 d) x
第一个应叫初始化,不叫赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com

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

GMT+8, 2024-3-29 02:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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