鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
& v, Q+ I" D. P2 X+ |8 x2 A
# p/ C  h' \% v: wclass CA3 Q6 V! A4 q2 Q# U5 ^
{2 }1 o4 Z0 m$ p( _$ A- s. y
public:: Q: S9 V! i: {: J* l! p1 R/ V
        CA();! w& _% G0 R) i" v) b: f+ X: \& d4 |
        CA(CA&);: |7 D- t5 ]0 B+ |, \$ W
        CA(int ,int );0 [; r: J# U) p6 m
        ~CA();3 W. m- J0 X- U  k0 \$ H
        void print();
3 T. [; h. {% t* C/ X9 n! z# Q: u7 f; S  t& W" W6 A
private:" \9 J# d3 A" K4 p( V1 G( e
        int i;
# @$ y! g% g& J: e9 ^        int j;
, h/ e* m5 c4 U};
/ W# f+ U5 g! M& ]4 M  e
4 S+ F# F0 c9 F" mCA::CA()5 n8 u( b1 d4 }) c( O
{
6 s) Q4 w- C. L8 `' l: o}
# w& @  Q. Q- s# n+ U
  Z2 K8 W/ F+ ]5 b3 GCA::CA(CA&one)2 P8 `- c- h2 t- T* ]7 q
{
, E9 V9 x5 l  k/ T. S1 H        cout<<"调用复制构造函数"<<endl;
8 g! h2 ?' F# u' k% O# ~/ @        this->i=one.i;2 Z& r* i# J# J
        this->j=one.j;6 q' g: A" y2 d( a4 ?5 o% r
}
" d6 @3 y/ `- `/ @: m
% O! k. f( S6 ~7 l: z1 p- L( uCA::CA(int m,int n)' l# @/ w, j3 t1 x4 D( W. ~- C" `
{/ z* j. R' G" P
        i=m;2 `: L4 A; x+ |5 f; m5 \: J! g# O
        j=n;
. B* Z9 d% b3 r: O, g}
4 r$ d5 e, y4 T6 Z' a/ R$ w0 u; O- ?
void CA::print()+ h# Q" S" v- L: I; Q
{
' Z& W* Q: R6 _! A2 F; a, c5 X        cout<<i<<endl<<j<<endl;8 _4 ]' `: m" G3 H$ \1 s$ @; e
}9 G% e) B- x" |8 _. x/ w
; X# j/ X9 ^4 S! P' T6 M2 |
CA::~CA()
. C+ c( l2 o& F, |1 q{
& |; |8 m* S8 F7 T3 k}
5 k* H7 N, T/ @0 O) _! v
: a5 M  |; o7 e$ Y# y6 G#include <iostream>
7 G9 c$ E  M3 O! busing namespace std;* r# {, X; ~# N/ Y9 O5 L
#include "复制构造函数工作原理.h") ~, T9 E( @2 c5 k- R9 |* u4 B
int main(void){        
& z1 K0 C: H$ X" k- fCA a(2,3);        9 _1 ~- t# V1 }
a.print();      
7 @% k5 l% u3 m! T+ } CA b(a);        
: H1 X* y+ o2 J% [$ v  z8 zb.print();
+ m/ v5 T  A: k      
7 h) B2 Y; z& C8 d: F- k: b7 x return 0;, [5 M- l6 b# l  @3 ^: I1 z
}
" Y( ~+ C% j% y6 A2 J/ g5 ^7 s/ @4 n$ _% C- }; U
; Z5 x1 B& o0 r# ^

% A8 M2 ^" }6 p3 o" t
6 t+ K8 d. H+ e3 }
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
' ~" L+ M/ \6 h1 \8 f1> 初始赋值时:CA b = a;: c" t7 o- O; D; ~9 O
2> 按值传参时:void myfun(CA ca);
! }7 D! d9 ?3 R3 @  T/ [3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
* ]( W$ b2 q- A9 H& }复制构造函数在以下几种情况下调用:/ C0 Z) K3 v8 b# h; Q1 `+ F% \* \
1> 初始赋值时:CA b = a;0 a% |! D$ U+ @% J) n- i
2> 按值传参时:void myfun(CA ca);
, a  L4 m2 B; i
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-18 05:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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