鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 - X$ S! V1 n9 r+ U
! T, g: r5 r: ?4 R8 `8 B. O
class CA
7 f5 E$ C: \/ u5 e, l  D" a{
# @0 s/ K" S4 N) k2 N; Tpublic:
) Q( c0 G# ^( F$ y2 B0 m        CA();
: ~7 @, O& `1 d1 A4 ]# {- h5 Y        CA(CA&);
( ?, d' ]2 W  K- `3 y% y, C        CA(int ,int );
/ p( d8 m6 B# D6 z        ~CA();' Z/ b* d* A7 _$ @8 y8 ?
        void print();: q; j7 o. L( x0 ?
( ~2 |9 \% c- C& c" Y
private:
5 ~0 m  t; M3 W        int i;
) ]% K. L! k  r$ l1 v* g        int j;
7 F" k# ?2 N" W; v. b};
0 J* @& ~: @; ?+ o3 g4 G% B# I. u8 B" O. U% R2 D
CA::CA(); d7 R3 F8 b( j( j% i
{3 x% s; ?4 y9 L3 M2 c
}, t* V& w, u  J) y) d2 ?% e

4 N2 H; p( }5 v* O- j, oCA::CA(CA&one)
0 q: ?2 e* G- M% {7 g! g{
/ g4 n, z6 C2 f8 ~" U* L( }  ]        cout<<"调用复制构造函数"<<endl;- k- Y" B% P* B
        this->i=one.i;
5 [2 ~! b; s' |8 L% c        this->j=one.j;( B. I4 \0 ?1 d  o+ Q
}
' ~; I( i% g8 T  W7 k
, `) X/ k. g8 ^$ XCA::CA(int m,int n)# A& A- x6 W0 E7 h+ b/ E" W
{
4 l- V* A$ p2 ?% S        i=m;
' N* a. A- v! M1 c; ~1 a4 [+ M        j=n;5 Q/ h3 w* ], _; g. ~
}
7 A2 O! _/ t) F# i9 A4 @, Q: i3 }) W7 t+ F5 O
void CA::print()- H% X$ O" O4 D
{
+ [) d8 J/ p5 q5 p; {* Y        cout<<i<<endl<<j<<endl;
9 ~6 E# l3 P! t4 x: b' Z}1 O) Q9 \0 h3 N6 \$ E
7 w) g+ S- u8 f" E1 i- ?9 [
CA::~CA()
: T2 M$ A3 z& s1 Q& o' I4 U{
5 x9 Y- o, c0 e}. d5 j7 ~! [) Z3 @& ^# e. ]5 A9 {
( j& l! T  J1 ^+ p# P/ Q0 V
#include <iostream>
8 A: j8 L, f  V: Nusing namespace std;$ h) @8 N( E/ s0 o3 m- o' }
#include "复制构造函数工作原理.h"
; _7 f8 r) J6 U5 J9 ~int main(void){        
; l% `' a7 r$ l' n; E' F# mCA a(2,3);        0 }0 R& w" |- Y4 S( q8 d% [* N" h
a.print();       / Q- z( u- O# {
CA b(a);        # u- O$ T, O& e7 m7 ~  R9 d5 U
b.print();
" _6 W" q* l8 o# {! }1 X       ) H+ {1 B, y6 m4 T5 w4 M1 a4 I9 Z
return 0;
- o: D& I4 u  M5 U$ S+ H}7 ?& i9 p6 G6 n0 Z
# ]7 k7 B( `* j2 _1 A% C3 F

4 B0 Q$ o+ r6 R* D8 L8 D/ G& W& U6 K, ]
& G2 Z% x9 A4 |; a7 R! ~, B0 o, \! v/ W3 C1 m
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' G1 D& C& ~; u% d) t* [7 V
1> 初始赋值时:CA b = a;
# @$ W' }9 p# w6 [2> 按值传参时:void myfun(CA ca);
# R1 t# u9 Q- ]; h3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ' e+ u" x: d, m; y
复制构造函数在以下几种情况下调用:
$ w" T4 ~% g' I1 F  R, D% n1> 初始赋值时:CA b = a;
" t* q" ~0 V$ c2 f' i& T; ~$ q% \) t1 ?2> 按值传参时:void myfun(CA ca);

) r7 C; Y6 p( D5 d7 B: T) n( F第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-8 01:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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