鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
5 n: _$ N; Q* k% c& E* ]9 J
" G  ]2 I. Q  h% u5 u: {" N: I7 \. d# Bclass CA
" M  D8 t7 l. R# N2 ~$ N{
" Y* M$ n1 a$ `6 i9 upublic:
7 H2 u  R" n! K) E: M  O4 z& M        CA();# R' f- J  Z' z3 b# }5 l4 i
        CA(CA&);
) X! O$ F+ r  F9 X2 ]2 p7 S' t( @        CA(int ,int );+ {, F5 m! x: ]% I6 [# K; K
        ~CA();6 V9 ?: G+ M/ w( Y& ~
        void print();" _9 j) j, k( G( k) w. u4 H

! B1 o8 g6 o$ h3 ~5 }private:3 Q7 z1 I! t; a' ^% Q
        int i;9 U# G# u. h- n3 Y+ f- ^1 g
        int j;
. `- D4 B/ {# D! G. S+ V  O};
3 U0 X3 |0 u: [+ g8 K  ?# d1 o4 ]2 R5 s2 H* f0 r: l; P8 ]* a$ J
CA::CA(); ^& V4 y% x( c* q
{6 m1 H3 N* H0 u* _, B
}
9 t) m  M7 q7 M; Q5 A) |  _4 _* w! j9 I( @: Z
CA::CA(CA&one)
. A# R  }  |% Y. G{
: p  x) b8 F7 }0 q. }5 j, n        cout<<"调用复制构造函数"<<endl;
- A' _0 k4 h" A# g3 t* ?        this->i=one.i;
' R; z5 C  P6 I% A3 ^, g  A' ?        this->j=one.j;3 D# }" W  T% Y! T
}
1 v( |; G- E" J
+ _6 X2 K7 E" D# n- cCA::CA(int m,int n)9 Q" @3 i0 L& v3 ]
{- H/ z2 |4 s6 [" O- f
        i=m;# y. `4 n' v; n5 n5 ~2 S8 a$ w
        j=n;# f. ~& g9 U0 s7 d- Y
}6 L6 h& K# {0 {- b$ A" h
9 a, w) P( j" ~! Q, W  f' _+ ^
void CA::print()
7 A2 a" D) K2 A6 H9 f{0 t2 F) Q  N# s, p
        cout<<i<<endl<<j<<endl;9 Y0 M3 u5 r# M' x1 I: ^) l+ d
}
/ g8 B; L! x; n6 G$ M7 N( X4 p/ m/ l1 b2 E" f. @/ v
CA::~CA()
% K7 Y  B5 q: O+ l5 |/ K( C4 z{' g: Y2 ?1 n, N; _, B" M
}
7 |( U( G& B0 U! m4 l
$ [6 z1 G; Q1 Z  Z: I#include <iostream>
, w) k$ M4 s2 _/ Zusing namespace std;
1 z8 C' k- w1 T' K: [# t: y( v' _#include "复制构造函数工作原理.h"
# J* _0 A7 O, r: R' f! vint main(void){        
% q3 g2 m) o8 u/ R/ W, b) lCA a(2,3);        5 G# L. X7 d* ]6 ]6 ?
a.print();       : c- P; J" [& f! r8 u
CA b(a);        6 e6 V+ m" }) I
b.print();$ w6 i! c5 b/ z( l5 S: K, R
       % B; i; y7 T4 w( m
return 0;
: C+ g$ W6 o0 R' G}
9 Q" E, K$ _" G# H% K0 n- B$ U7 _0 s8 E' }* E$ J/ n

0 ~% P+ O% V. m6 l/ K! z4 h7 P" O5 J! L" G
3 z3 M, x2 H+ Y+ }. B1 L3 ]5 B
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
  e. R7 w1 d% A6 S; x1> 初始赋值时:CA b = a;7 t( u6 q8 ^; n2 a$ n' ?
2> 按值传参时:void myfun(CA ca);
; D8 w9 [4 j" k8 p' {3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ; B( l2 m1 m* n3 h# I" v+ z
复制构造函数在以下几种情况下调用:
& n3 P; l1 k+ y" z1 ^6 [1> 初始赋值时:CA b = a;' L! ?$ [# R' g" ]: z
2> 按值传参时:void myfun(CA ca);

0 Q7 x4 h3 D1 B+ K( Y7 U第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-24 05:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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