鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ! z) r' e, ?" V/ Z6 E! l. P

$ O9 ]& `. e+ s5 x8 E! t% j' ~class CA
) w% |6 g7 A" a{  h2 h" b5 ^2 y4 T/ j5 v( U; e  r
public:
' u. z5 T* P3 E$ _" Q( p- C        CA();
( d8 u9 k  ~( s3 b. e+ G        CA(CA&);3 o3 r+ `" o) Q9 x
        CA(int ,int );0 ?+ H8 g4 h4 r) m+ K4 n
        ~CA();( H- P; z7 d5 H+ l
        void print();5 m5 d, x! H2 c

0 j8 i/ U! j& ?0 B) Jprivate:
& M- I) j, E! `: B# F' z% M        int i;
" i  ~& S& b  j* F        int j;5 a& J7 I8 _- Q& n; s: \
};/ i4 h$ B6 m5 X; A5 b# T
: f9 Q: e8 ?1 y3 V) q& D
CA::CA()8 ^  h1 P5 O! p
{/ u6 \% {8 C( Z$ z( m
}3 b) l8 e% K; B; n$ i- y

  E9 D2 [7 H' d# E: cCA::CA(CA&one)1 }! R: Q2 ]" C
{
( O& G3 g8 Q+ N  p        cout<<"调用复制构造函数"<<endl;
/ E3 w- R2 U" ?. ]        this->i=one.i;
& f5 ?  d0 W* i3 c        this->j=one.j;
& l& v  C5 w$ _8 }}4 u0 I. A2 u# N8 o+ v& W

8 I5 A' [' x9 b9 B! @CA::CA(int m,int n)
: i% o9 O" }+ p{
' v! X7 |. z# f8 g, b        i=m;
- c- I' Z7 X3 P        j=n;, K( _2 s$ \4 O+ G, _/ ]# @
}
7 K8 h$ e" K2 h0 c1 @1 H+ p
7 X/ R* s' x' r" ?) ~/ q0 Z" evoid CA::print()
( i- j6 N7 i' }4 Q2 G9 K, K{
" E( a  D7 V! q0 C4 I4 D/ U7 c9 X! f        cout<<i<<endl<<j<<endl;
! ~! h8 v3 A$ N  H; Y5 _}
& E0 {$ M% V- o: i6 K
# Q$ B( C1 u* n, v  eCA::~CA()+ G7 L' t' t) G0 V4 N# p
{- N9 L$ Y6 u( h$ K" W% n
}0 {. j$ D  ?1 l$ B0 L6 v  P
8 d5 ~; k/ t' R7 O+ D
#include <iostream>
+ n& D1 v" e, ?using namespace std;
) Q. N1 |) s  e" C1 r#include "复制构造函数工作原理.h"7 M/ A6 Z$ i" ?/ p- k. s* V
int main(void){        6 d# w: J  d, ?5 I, v$ Z
CA a(2,3);        ' @2 J( Y- N) A6 v
a.print();       . g4 C/ S. g9 n; U( T; e" m
CA b(a);        . A3 G+ c+ [/ f  t( q# H
b.print();9 p' y3 g& |' K) W5 T
      
- S' t$ @7 U4 _" e return 0;
/ h+ T+ A/ e/ m}
  T" H7 d0 D# e; q
$ J( _' }$ Q, J/ W$ _8 z6 R
" v. c: i" i+ D5 M& F4 N# f: j8 H, F; F
! j" K! e/ D" `1 @. E0 Y
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
0 `  h+ {* D/ U, c1> 初始赋值时:CA b = a;$ S! t# m& R1 ~. V7 \
2> 按值传参时:void myfun(CA ca);
( Z1 [. [5 T$ _$ r3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ' N" p( Z, e, V! T! j$ u. S+ E+ d
复制构造函数在以下几种情况下调用:
0 ]8 I% b# b9 U1> 初始赋值时:CA b = a;. w$ W$ o8 V( S( V
2> 按值传参时:void myfun(CA ca);
/ u( b* I2 r4 y- i5 [+ [
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-1 20:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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