鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑   T9 c. {6 |! T9 {  b, k) r
" z  ]) |2 M! ~* @1 b
class CA1 {! V" A7 |% n2 ]6 I7 M
{# [4 L2 b/ q6 k3 X9 b
public:8 D' t, H4 Y- w/ U% r
        CA();7 O- d: x; C# Q
        CA(CA&);
' |, o8 B( V* X+ r& J0 F        CA(int ,int );
2 o0 p) z+ o5 ?        ~CA();
0 f4 ^) i& |7 l- d% p" w: F+ a4 R        void print();/ V( W8 B$ b( D$ R- u' y9 Q
# _- h, q. I0 x2 T# |- A) s
private:
$ ?! g2 m6 U% |+ A$ U        int i;8 r% ]% I9 A. k: \+ S
        int j;
; F0 d: o# p* E( S0 C4 a};% C3 K" l6 U9 n7 b  m, |9 J5 y7 Y# b! v

: Q2 p9 R# S' p3 ]; }CA::CA()
6 Y! v. X8 |3 Y+ A) L/ F  `{
  s9 v- w. O/ e}
" j$ [1 R8 [8 j  v7 `+ V: V: K: w$ K6 V8 u) X8 [
CA::CA(CA&one)8 b" F! F6 w6 `; \* Z
{
* X: u/ m4 [* A        cout<<"调用复制构造函数"<<endl;4 Z/ E3 n, Y9 Q5 D7 f
        this->i=one.i;
8 m$ A, D' G( g3 s9 }3 L        this->j=one.j;$ l' u/ m* B, S  C. r
}
' _5 D" e) J  H! ], N( h! _. n) A8 r, B5 B
CA::CA(int m,int n)
- ?; O4 M, {) p4 O" d{8 d4 }  t  ?+ s' p; f
        i=m;& V5 }/ C8 U6 [! g* ]
        j=n;
) z! G1 O+ t. N' J+ G3 E# P  [( X}! s) e" r$ i; }, H7 F. q# v
& ~* q7 a# o0 l. p9 q' l( @; g
void CA::print()( v* E% X2 h3 }/ [- y
{- f  v3 ~8 A4 C5 ?  p
        cout<<i<<endl<<j<<endl;/ f$ ?  G! v9 {( z6 a9 ~! J
}
) r" }1 O7 m5 v; i! s
2 Y8 G9 I. L. |7 w: j; `CA::~CA()
; P0 Z5 n* w  }6 S" D# L{
: N- a6 s, o- \* _5 M1 X3 C6 T}& _0 r* v% s8 A0 Z" m- V. g

9 j9 O' [* h7 A5 W! F5 y#include <iostream>- K/ ^' x0 l, W( `4 ^
using namespace std;
9 p- p- Q6 Z. X% A2 y( w#include "复制构造函数工作原理.h"7 J8 g6 A! l3 E+ Z- i6 V1 ^
int main(void){        8 b* f6 I, B# H  ]+ B8 p
CA a(2,3);        * s  L2 s) I- S. [( k* |0 Q" v! v8 V
a.print();      
9 Q* B5 @# o. K4 ` CA b(a);        
' F& Z6 G" @+ C! Q) O- \b.print();, S3 L- d0 j  `
       ( h$ ~7 I, i6 g: \
return 0;3 N( Q2 ], }1 |/ z* |6 I9 N
}6 p" Q, J; Z' y
! t8 B8 b! L  u
8 D9 O6 d3 G* ^

6 ^/ w& \' r6 x
2 B( t7 n: N6 g# H* }9 C
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:) m" v3 G; i3 u' M5 y' q1 Z
1> 初始赋值时:CA b = a;0 V6 N& K. E" G7 A6 ^7 _
2> 按值传参时:void myfun(CA ca);1 ]" q! s: s$ f. R! G2 N/ |
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 1 n* n* T3 f, _* j( p0 |: |. a# m5 a
复制构造函数在以下几种情况下调用:1 s, B" Q' M8 T" [
1> 初始赋值时:CA b = a;
: [! c! n3 y2 n' M+ h3 q2> 按值传参时:void myfun(CA ca);
- \; _$ ]' c6 c5 v0 q* u
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-19 05:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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