鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 c) v/ u! ^& L% ^( h. f
2 {& A+ ]8 t5 Qclass CA
  x& S  p, u* y0 L1 {{8 m$ @& u+ M2 |/ |& H
public:
' K9 G$ g& o; w! g- e        CA();* L& |( f3 v+ U  ]6 `+ U& M. k
        CA(CA&);
( y: a. b/ K0 F# d5 p* Y+ i2 n        CA(int ,int );
$ R# n# _9 _/ j1 W( S        ~CA();0 |6 H9 c( t9 s' {; X
        void print();
& R5 K8 O; g) q7 \; h9 X5 C9 p: J6 T" ^' O
private:/ S3 X8 s; u# B) w5 k8 w
        int i;; o( L' A( o' r: R$ t( P7 P; l
        int j;
! d& Z0 d& O# Z6 p6 Y; z) \};
0 y" j+ b+ B# Z
" S! ^1 f( n  {; x% {CA::CA()
3 B2 I, ]1 G! {4 O# C{
" [# q% \# r/ X. ~}
6 f. \( O$ j. E. X. O1 D5 D% I2 Y! T) m% O& ?
CA::CA(CA&one): T0 B/ X) M. l$ H- S) A/ V
{
0 c# ~& |* b9 V* v& n0 u        cout<<"调用复制构造函数"<<endl;5 L7 ~! ~. F- F' N: n9 `0 z
        this->i=one.i;
$ T- O' g- \) x& a$ l        this->j=one.j;
" S8 F& G8 d2 h  b8 a* i$ B' f}) T, D2 z5 V* a* v4 u* G
. V! K3 {* [1 y7 Y) H6 ^+ q
CA::CA(int m,int n)9 e, ~( n1 h4 f8 i$ ^+ {  P0 Y. q
{. d7 d4 W8 K0 g: X, _+ B
        i=m;' C# R8 r, N4 f9 K0 V( }
        j=n;* c! k3 `& |0 m- h( y
}
# M( [0 e. g( @3 ?) U
& e$ @+ X' K& kvoid CA::print()
: Q# ~6 R6 }/ m! B5 R; G$ p{
+ f* C" N/ _2 Q4 @8 N        cout<<i<<endl<<j<<endl;3 ^* H/ }6 I* ?3 ?! b
}
/ O$ Z4 K2 ?* k! l5 A" K. x$ |% y0 G; Q  O/ P/ G$ y
CA::~CA()
7 C  _4 u: Q$ W$ Y. X& G- x{
; O4 j% N6 I4 g/ W% M% j3 F}
# m; M+ ]" U" m7 X; {# X5 N! O& [) Y* w. J$ ^) w+ c
#include <iostream>
& d" K' a1 w' R* Z7 T4 s+ Uusing namespace std;$ u2 Q' j3 _( K
#include "复制构造函数工作原理.h"
$ z' Y" ]; D! M( Mint main(void){        
! G0 h9 E0 H$ n7 \CA a(2,3);        
) S1 D& I& l, O" Q* s! Ga.print();      
: [* v. w9 `) i9 h CA b(a);        
9 }: u# `. C/ j" ~0 K8 Tb.print();) f' i5 g( _5 `9 f6 D2 m
      
, H$ G' ?3 J) S. M return 0;- U- c' f( h  B) {. S, {# F
}
2 O. T- G  D' b% |4 F+ w
5 p- Q( d! f0 m$ F0 L7 r7 \5 _7 u/ N4 c: G
% A0 M9 I5 p5 h4 f4 K7 v, M8 B
% M7 M3 u4 f. f* p
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:4 {1 t  P% ^3 |$ J. G" V4 n) m
1> 初始赋值时:CA b = a;
9 ^3 _0 E) H% T3 l4 `2> 按值传参时:void myfun(CA ca);( Z; ~6 M+ G! `9 P  C2 w
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
5 e  p( [* |& e% }( x复制构造函数在以下几种情况下调用:$ X" c" ~$ q4 h% u
1> 初始赋值时:CA b = a;
# S7 j9 d: A& J; N5 f5 Y, i1 J" q$ g2> 按值传参时:void myfun(CA ca);

* |8 O( T: m3 H& P* L# E- y第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-27 12:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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