鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
2 n( `. O, Y9 O
: a/ ~4 E/ }( u& dclass CA. t+ B1 N" p1 c, ~! T, F
{5 A1 g6 [, F1 C- |; O
public:2 ^5 w7 l# A& ]; {: p
        CA();+ b4 p) P! T& `% R6 s; T
        CA(CA&);
- B$ e- ]: l! a: l( x1 e) T/ X        CA(int ,int );8 j1 V1 p' Z! M: c) j5 a5 g" B
        ~CA();
' Y+ D7 C* n* w. r        void print();
: G  Y! b8 [3 Z+ X, M3 j% ~7 n9 C1 ~6 j; v4 F) ^& T3 w
private:
/ f+ v% b; `8 e. A% y; W6 F+ x5 G- M        int i;1 |- H6 B/ l  t; n) q4 L8 c7 _& }
        int j;
; H9 S9 C$ V# K9 s" P};* G4 _. |! G' \  j$ \

; @( w( ~' y+ l# cCA::CA()0 h! f5 x, X2 E$ l3 J; g* b
{
, H# v" |6 K& h, c5 _+ F7 h}' y2 r- y! ^8 d( R( s! q

$ _! h8 E+ z# uCA::CA(CA&one)4 C' g5 H2 ~( Q
{
, d' J( L- f# Y  L- e        cout<<"调用复制构造函数"<<endl;& \' v: e6 L% ~6 Z" F1 e# h
        this->i=one.i;) m% J# d  v; j2 k7 p( x" @
        this->j=one.j;2 H8 ^5 r: v7 f# K$ D
}) a/ K+ m5 c, K$ `4 }/ }0 ]. g

+ k) ?$ X& X. D% WCA::CA(int m,int n)5 l# a. D- g1 q" }
{
9 {( u  ~0 X( c6 t* [* N% j        i=m;/ I+ z! p% t( r9 g  L& Z2 [
        j=n;9 h# R: v( q& H0 [8 W
}% Q' p0 C- K1 D; ?2 `# F9 m
/ Z  L2 r/ @, E% W3 M; f  D" E
void CA::print()
% O! u5 w. e/ ~+ B) @0 w# ], l# b{+ g2 Z, r* f& o4 L* ?" G% f: A7 Z6 i+ X
        cout<<i<<endl<<j<<endl;$ F* J: }4 Y: f+ [% O7 V. B
}
3 u* k' C3 Y' `. H& z$ |/ a) h6 J8 f9 `' y+ z- S
CA::~CA()" L4 I  ?1 F+ Y" z2 q! k
{
2 D# M# V' C4 b}/ z! e% a% M$ u

7 o4 `: E6 A' R4 K# n5 Z#include <iostream>
, p/ d# X" `$ @5 {' I; C. Wusing namespace std;
7 `! l( F0 v6 t9 e7 k#include "复制构造函数工作原理.h"' w/ J6 q8 f- }, x
int main(void){        
8 n) L% ^% b0 H: V5 ~5 fCA a(2,3);        
* N3 \9 f; A( ]# x) La.print();       : ?+ _1 _: u- e, S' P
CA b(a);        + q9 K5 M9 ?, _  I: p' P
b.print();# q1 E7 Y8 r( N% T' y: I; ]- g8 F
       + ?3 J' E  Y; c% y
return 0;9 ~8 C4 s3 G4 t& S0 G' _
}) c5 k  |3 r2 W: V! j* H

4 T6 @( u$ X: |; H% o! U
4 _: F) q: y& }) N3 @7 i
2 L! \6 N# V/ E4 o8 m
. Q4 ?) \. g8 _$ p! a
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
; V  {  ]; n6 l1> 初始赋值时:CA b = a;7 g& t3 F! R% Y1 M7 v: j
2> 按值传参时:void myfun(CA ca);$ W) |3 v$ S2 ~4 S
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ( F- G4 H7 w0 \* l6 Y1 J
复制构造函数在以下几种情况下调用:# M+ I# H" O9 |6 g- Y6 o2 N
1> 初始赋值时:CA b = a;
" ]/ }* E2 n1 {  n4 N0 Y7 I2> 按值传参时:void myfun(CA ca);
. }3 x  `2 j) U
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-9 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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