鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
4 y5 i3 {) e. P* h% J' u: Y" G4 ~: p( Q
class CA# Q  l7 `0 [0 m& X. `4 [2 ]2 a
{
9 B6 N3 p( c4 |# X3 v; s5 zpublic:
- J% c, ]' K  v) o        CA();
6 ]  ]* q2 m/ H  A' I" y7 J0 t        CA(CA&);6 I5 t1 ?7 ]. l5 E' Y
        CA(int ,int );
; D: I; r! y/ e) V        ~CA();; N8 T4 U- t) ?! I
        void print();" J7 W, r5 e# p% ^

$ N/ p$ r, o- m% E* Mprivate:
% |8 m. G( L- U2 n7 }  `        int i;( B) x, D4 x' e% ]  o! u1 l3 c' \
        int j;. M& X( m9 E) u, H
};
% f# f4 T( \1 l8 `! }# G! ]0 `( b2 N7 L- m$ {& G- C6 a! k
CA::CA()
9 g  y* k$ D' ]  K6 `; v{
# x( G7 e3 Y; N: K- ?# ]}
) c& J' e+ H, \- _0 f0 R0 i  z
7 T) j( P( F0 e8 QCA::CA(CA&one)8 i( ^& i) w7 B) O$ g. q, G
{
7 E, n" S" _& g: _7 s% t        cout<<"调用复制构造函数"<<endl;; R8 m8 E9 p7 T1 j! B; W
        this->i=one.i;
( H- f' Q+ D6 j0 J- [! q( [        this->j=one.j;
8 G( q& u( A" h" T% i}
! M0 b+ V* U# D. x7 V: D1 s6 P; B- N' L4 y0 S5 k
CA::CA(int m,int n)
- Q) Y6 }  T. v4 V. L# D{
* p0 W0 ^$ T& Q1 k3 z& l$ j5 p        i=m;; @7 e! ?! k6 n: }
        j=n;
& D* D+ H* E5 M$ \  q( ^/ Q& ~}
7 n' D4 m1 g- g* ]6 c/ H1 _1 _; K' e; ~. t
void CA::print()9 k# P# v, K6 ]6 V; |* N
{
% I3 |7 L' L7 ?( {        cout<<i<<endl<<j<<endl;
$ a8 k9 z" Z6 f. s7 D5 B}) u6 Z* b4 C* n% s4 x
4 z: U0 j+ T- t. U/ A$ Z! t5 k- H' E
CA::~CA(): N7 e5 P5 l3 ]( H2 h3 x3 o, \: V
{5 U* h* w+ U# q: O! T
}
# Y( t8 [3 Q' G# F
9 f( Z! d! a( i  {: n5 t#include <iostream>
# l7 p  k4 J7 m( q, _8 D) Jusing namespace std;( |8 C2 {1 K$ w6 w8 o7 H5 X1 w5 W
#include "复制构造函数工作原理.h"  U" `2 Q( X/ M. p7 B7 [$ Q
int main(void){        
: ]- K, i7 }3 w, a3 p  xCA a(2,3);        
0 `$ I# e6 K8 H4 Y  \a.print();       & m* U  _2 F2 h1 {5 f: J7 l, F* D
CA b(a);        " G- ^2 ?7 A  ^$ }* ~% k
b.print();
: p* n9 J6 B7 X5 T' }( t! q      
$ Y4 R: u/ u# c1 w% ?  s7 r9 ~1 o return 0;8 v3 N8 v. K! N6 x
}9 n2 t: Z" P5 |2 i3 f
( R# z* X4 i" y0 e6 D' h

$ B3 x3 ^$ f& C' h9 e' b
5 E& ]% x6 U$ b1 g1 s
# u& {# m  R6 a# u. w8 @1 C5 N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* R1 P# v, i" i7 r1> 初始赋值时:CA b = a;
8 d" F8 m' Z: `& F" b2> 按值传参时:void myfun(CA ca);
2 w- z. b* K0 |" x3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
# L0 z/ G( p- g/ o0 ^6 m" P复制构造函数在以下几种情况下调用:
; }, O' z5 C. L1 U5 C, q1> 初始赋值时:CA b = a;+ V4 X! v) ]4 a0 J" C9 R' j) `
2> 按值传参时:void myfun(CA ca);

7 t; Q1 L/ R* v1 {" H  l' J第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-8 15:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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