鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
$ ]" G4 Z' z" U1 G  ]8 P( I$ {/ F! L: [( F
class CA- B! S3 e+ I& E& V
{
  @  I2 r5 V8 r1 n8 i" o& tpublic:
  I  C' c. I: w4 ~5 N        CA();
5 c- S* f; m8 }+ p% j9 D        CA(CA&);
" B# \2 P, w) i# m& @5 Z% [8 l! m        CA(int ,int );
. N( }7 [+ z( V$ v; `        ~CA();
& a6 V! W% X& U3 @1 L        void print();
# h9 j* _+ I% L0 ?
; _) {- m, o; B" Qprivate:3 H' ]4 o6 r$ l' ^; W
        int i;0 ]" J0 D9 m$ u, f! ^5 x
        int j;
( {- z3 \8 q, M  w8 O};! P: F+ J% b1 C: S- E

5 B, `1 s3 w: K; C( J& [$ \CA::CA()
2 |2 x* L$ d' A9 B8 U{
7 \6 ]1 }1 J9 T3 z- V$ i" n}: L5 I: l6 M& Q  v# s$ h4 e  b

6 o$ z+ j( S3 y7 M7 tCA::CA(CA&one)- [( d$ D4 ]4 j, z5 E$ N$ g
{
6 m7 y# D$ u7 m# O: `) Q        cout<<"调用复制构造函数"<<endl;
6 ^4 v5 Q# d+ S4 |* d$ ~        this->i=one.i;
0 e( U0 W* {' e& N# Q$ v* P        this->j=one.j;
( A) e2 V# W) Z2 B}
7 ?( r2 O) \6 G/ S; C0 \
" k! l& b1 u/ lCA::CA(int m,int n)
% ^3 f" ]  K1 @8 L6 J: ~" ^{
" ]6 U, _' w; l/ U- N" `        i=m;; V3 m% Z1 b6 r/ m8 M0 j
        j=n;
& e/ x( H. a& o! g6 H& e1 K}
3 s) \2 Z# J# N
! u. e4 D, j, }0 A+ |3 avoid CA::print()
6 d; W$ y  i2 X" `{
: ~1 l0 ]) {" d: d: C# i8 f+ g        cout<<i<<endl<<j<<endl;
9 N. {" {, b6 N/ M}
$ k: N' s; i/ t8 @+ D1 o- m
& A" B, G" I* ICA::~CA()
: p" z: Z8 D3 P) v5 J& j4 y{9 T; m: D+ ~) e( K* T
}
! a4 h9 y  x; k# w, R
/ y4 z+ q  u7 b; f  _5 L7 C4 j#include <iostream>
* i4 H. \7 u5 J& z# E( ?using namespace std;
! ?* i$ ], o9 |& y  K#include "复制构造函数工作原理.h"
) _/ y7 o3 n1 y7 p) Aint main(void){        + |5 v+ P0 b% L" p
CA a(2,3);        $ F# M. Q+ r9 g) ~" j5 x
a.print();      
, Y4 Q2 m, w$ B* V( D5 B: P) P. R/ O CA b(a);        
1 H$ j/ x" F* ]% A# pb.print();) a2 j3 H: s- G+ ]7 P  Y/ s- o
      
7 f4 s5 o3 ~- {, @4 I1 [ return 0;
# m& W( d; ]% U3 J}! ^' h* ]% k! X# H8 \" s8 B

7 ?5 t; [6 e, f9 }) B% u
: Y2 z5 Z! A4 o$ d5 _
+ H* e- }8 |$ B+ P, s; K. u- l1 q8 c7 h) ]
0 `$ z- W) [! b  m6 p
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* b+ S6 ]" K' o" h) N4 j- z1> 初始赋值时:CA b = a;
  ^2 |. M3 l. O0 ?2> 按值传参时:void myfun(CA ca);
5 x4 Z* z& }3 `6 r6 ^3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
6 t1 T" u' T" L% u复制构造函数在以下几种情况下调用:1 v& P/ c' T' r/ X9 U
1> 初始赋值时:CA b = a;
; U( R2 M; w0 n1 H* u- ?! f) W2> 按值传参时:void myfun(CA ca);

1 I% E# o; z9 R4 V第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-4 13:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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