鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ! _% s- k- L+ E$ }4 f! A

$ Y$ W2 `' X# Z2 u' K' ?# a- vclass CA1 Z* [3 J' o! |* U6 {. q  R
{
' L! T5 j8 q) E# w7 Mpublic:
7 l4 N: W7 b) X7 a        CA();3 d( ^0 E+ ]. k
        CA(CA&);
: X; }7 T8 K: |# m2 x2 E        CA(int ,int );
7 G2 l% b% v7 Z  p0 L$ j5 y! P        ~CA();
# ?1 @( z1 X5 S6 E2 o        void print();* M6 h- T( }' T8 p2 }0 \; b

; m2 a8 u# U8 h5 f# y' o' Aprivate:: ?' @) m3 X5 |9 h, H  R- m5 {! m
        int i;
  W, b9 U3 i- H4 B+ k% {        int j;8 I: I- p6 }3 O. |' |
};
+ ^/ J& A# s# N8 `& W2 ]; w& X+ e3 z. q% g" Z
CA::CA()
: v# T0 A3 l/ ?( q* E{; l: P! d; @; A
}% W2 B1 E! K! ]4 E7 |, i

0 h! M1 w" r* e8 A1 \- L( J, YCA::CA(CA&one)
( _2 O$ ^9 s! N! O( _{6 \# A' z: O' B, u
        cout<<"调用复制构造函数"<<endl;
' y- I* b1 x$ T: h9 F% f$ C' l        this->i=one.i;2 o; [- X3 c) Q  ]
        this->j=one.j;7 h& E/ x8 P; s! I  |+ E( N' i
}
: b2 i: z! n+ m/ Z5 y
. }: c  w. q7 ?9 B: x5 |: R8 ICA::CA(int m,int n)
3 _; F* I* t/ ^% E{
6 D+ x6 B: h% l% u1 y6 L& D2 H; i+ {" n        i=m;
1 Z, w( G! \$ T8 W' R) F7 B        j=n;
4 D1 D2 e. v) d0 R# Z2 L" f}1 v8 D. ?: d' v2 X2 j4 |
6 Q1 }/ M3 x. l9 ?7 C1 M
void CA::print()+ V' M5 u% \8 P* u  m7 T0 n
{
0 P, f$ F: ^- Y. ]        cout<<i<<endl<<j<<endl;
, S0 s8 M$ w) a' }2 {}
5 k9 C' T5 H7 D4 E% H# w
. N+ r/ C3 v! J% w2 o% {CA::~CA()8 ?2 t1 `1 U+ B/ F
{
6 Y3 Z' B( _3 |) s+ ~7 @) y# x}  E# i; i4 D' P) C2 P. `

# Y; u/ D  }; \3 ^#include <iostream>
8 H5 r! J5 p% I, Y9 N6 W% Q/ Gusing namespace std;/ c6 |8 N6 ^* J, \3 R
#include "复制构造函数工作原理.h"9 }% e$ B( I8 o! S& p, s0 J
int main(void){        
6 U& Y/ v; B8 a3 ICA a(2,3);        
- j* j8 @" \4 H4 D( W. f! [, va.print();       1 r- Y( F7 H. k8 \
CA b(a);        5 a9 ?5 Z5 i3 J* U* [
b.print();& N% K6 r1 D' P; k1 x
      
. l/ l; @) ^- o' u' o9 l3 \  b. j return 0;) z+ }0 Z; K8 ~' M$ S( {! ~
}: n, I8 c' O" C  T0 n3 B' F

0 W3 g& m1 Q) H) D" U3 A' Q6 v7 w6 x2 G

% ^* u; V1 C* I  {2 d  N2 Z8 }$ b1 w1 l' @& \/ n
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
" _, x- A5 E: z. ?1> 初始赋值时:CA b = a;3 j& L: v# P8 N7 v5 T
2> 按值传参时:void myfun(CA ca);
: Q& {* W$ T/ m) N6 C/ Y3 C3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ) {' P% c( @7 ^( ~- \0 ^: L! k9 I
复制构造函数在以下几种情况下调用:
1 W; K! ^2 V# f1> 初始赋值时:CA b = a;
  g( h6 Z5 w' P- r% x! D& p0 x2> 按值传参时:void myfun(CA ca);

' B1 T: d# t7 m* j$ q第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-28 04:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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