鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
) z, x; v# o* V
" d0 h6 x9 r3 _) E/ aclass CA. `: M: Q- v* u* M
{2 T# h; T$ C$ v3 m, E
public:
: \5 D+ b6 ~+ h* s+ d0 {        CA();
. v9 i2 o9 A" o; C1 t        CA(CA&);: V3 P4 E, J& g2 o% ?, j
        CA(int ,int );) S. F9 g; \6 D& z+ L
        ~CA();) ]4 \/ ?5 i& W4 s2 m! Z3 @
        void print();# \! d0 b. H* S+ V$ i  K$ ^, T
! e* c9 Z& f: a0 p- R5 \& J  I
private:
' c  e- W+ w$ d- x2 x, G4 L        int i;3 h' n- B' t2 C. _) u
        int j;2 ?% ]- k, m5 s1 `% ]- E' _0 `8 v
};6 g- g2 U! r9 ~: v7 [2 B" h4 A9 A. u# e

2 e+ r& ], o. `- d- B* tCA::CA(); a4 B3 ]" w1 x
{+ m" ^5 @  ?4 V$ V) u  h
}
3 ]1 g1 l" G' j3 N! p5 @4 x0 A# |% a
: h4 x1 G' \# a' {9 e+ ECA::CA(CA&one)+ x' O$ O0 n2 Z. `& ]+ Z
{
) O& I/ d, {' U6 q2 r- b        cout<<"调用复制构造函数"<<endl;
: q9 e+ ?/ M5 z+ o! `/ d0 v- b        this->i=one.i;' a' N. j. ]7 _: t; l, T% x
        this->j=one.j;
/ j# v# l/ ^3 i0 U' k- o}# L9 a& h4 R* r! X' t8 m

2 @+ B% n# c$ D( c1 _CA::CA(int m,int n)
  ^+ b1 [9 i# D, f- j{' \2 {5 E; b+ R+ |* P
        i=m;
4 U% j# F1 y( |) S( m" n        j=n;
) d3 w$ s7 e9 x+ i}
" {5 t- R$ K6 e% _) d
6 c( ~1 n* k! F5 v+ [' ~void CA::print()8 N# `& e4 Z! k' R6 F- [2 w
{3 \) E1 C6 p( _, f& p# r3 L/ i
        cout<<i<<endl<<j<<endl;5 r' _  F/ a  J: d" F$ d
}
7 V# _1 m) Q* z7 |2 T5 j2 e
( y$ u. W& {7 Q& gCA::~CA()# i- g# ?* q6 k" v1 f
{
! L! D- @( J) O$ b% M* s  D8 o}
! ~" G7 `" u- L5 u4 e
9 l; @9 ]+ ]0 ?  o#include <iostream>0 R+ J: Y' |: ^8 W$ F( S
using namespace std;- X/ d6 {. e4 m- C5 b
#include "复制构造函数工作原理.h"! [8 ]3 S0 O8 g8 R
int main(void){        
7 V5 \5 g. H  b: n, _9 VCA a(2,3);        
; T1 `0 ^  n5 Z) D6 E3 \, L) M$ Ua.print();      
- [8 A) U; q. \2 T2 @ CA b(a);        
$ R! n- r# [/ W; Kb.print();( z; m! ?4 `- w$ Z# q, i
      
% G7 y  r) r7 _5 U" J) G) m. r- J return 0;& B; D, }( g( U/ \7 ^+ Q' k, l$ A
}
  P7 G9 Z; Z1 ?: U1 }
2 i% r; E2 F6 ^+ b  G5 F2 i3 }) D

. Z2 @8 F9 |: d6 M
, {: E( t+ `* ?5 ?2 x- ?7 m
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
# ]; S* B' W9 l" L& x1> 初始赋值时:CA b = a;! I3 G/ [- v5 q; N, Z
2> 按值传参时:void myfun(CA ca);
. }+ |' q2 c% e* t3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
2 F3 C9 [7 x+ M0 t/ \) M6 x复制构造函数在以下几种情况下调用:2 c; Z5 x' i  Q6 Z& X0 N: `9 v
1> 初始赋值时:CA b = a;
/ G6 R, d+ V/ z7 q& M0 N8 Z2> 按值传参时:void myfun(CA ca);

* |9 j. Z$ R$ q, h( ?- c( ^4 D第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-9 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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