鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ; ^9 X6 X' L7 N9 Z& p
. \0 ?$ W/ T. @- c/ `
class CA; ]5 a# k: ?3 z1 ^3 W% E
{
/ B  m3 D$ k, ^+ Q6 L$ n; jpublic:8 _7 ?  o) j- A" A- V
        CA();, Z# c, Z* `0 {4 ~" ?; r, ^$ l
        CA(CA&);4 m4 t- w$ V0 A/ q9 z# T
        CA(int ,int );  D7 p5 k6 H# X2 B" y, j+ K
        ~CA();) B/ [. ]5 L. l7 V) I5 b/ k, I) F
        void print();" r1 ~9 b" ?5 o) u- E
3 m! d: q' n) Q, `6 m
private:* a. M3 J: T& @# G. y6 R
        int i;4 P+ |6 C' W' _. v- p( |( l% G+ P+ ]# F
        int j;
' B4 }5 }! Q+ v6 y};5 z6 ~0 i* v1 k3 C2 I
: q7 J) t$ ~2 d# `! E
CA::CA()7 R8 K* w- c! [8 g0 l: k: s
{: O8 i6 T! @! C. c, T6 R
}# j, {8 o& @: o$ e, u' Y9 d
: m  |2 l$ A/ Q, i0 L  B& D. t' _' s
CA::CA(CA&one)9 V0 Z  v3 f$ [
{
+ G0 c, p: l" \' ~. s: g3 m        cout<<"调用复制构造函数"<<endl;+ O. M0 O0 T  R4 }' j' j* u" }, W/ C
        this->i=one.i;
; P: q- G9 M1 ~" N        this->j=one.j;
/ d4 v# C) G1 J% R' f}
/ e7 G/ M. Q6 a2 z/ X. c. {; L
+ x* L/ d0 @3 t5 \& t! \7 t& SCA::CA(int m,int n)
9 S) L* s5 |+ d! d* R* A{- T0 C( R! x, E5 R" P
        i=m;3 `& \" \( W: q. _1 }$ o7 r
        j=n;
( M" R! X' O. Q( Y+ b6 D}
! Q# f/ h" s  C6 Y: l9 w
* B8 V7 v( ]3 l) B- svoid CA::print()
7 Q: I6 {$ B7 v2 ]  |) O{
! F6 n# f& r6 t7 r        cout<<i<<endl<<j<<endl;
% B( D' q4 C6 J/ i3 U# G}0 i1 h$ h* Y$ u, x6 z

. _* k2 I+ I8 q6 m# l2 WCA::~CA()$ G8 N6 h- k: o1 E5 V
{& _3 l* |- h* u* ?
}
8 A' r9 ^1 l# B( Z
: V) J1 Z' I* m# _6 A8 k#include <iostream>
) A1 c6 `* p: }: J. v5 |; busing namespace std;
% i! q* z& v( }! b#include "复制构造函数工作原理.h"# K% d. k5 N( O0 n  r/ A. i& D8 @
int main(void){        
: G; s) I8 p: b9 p' Q- ^CA a(2,3);        
+ X: A& S# ]2 R# U; n3 `8 Ma.print();       $ Q  E3 r$ O4 s) A, w
CA b(a);        
7 O9 P; b0 S# o4 _b.print();- A# C$ O# a- f! s1 ?
      
6 e+ w" O' E: o# I  S( K% ? return 0;
! X) K- \5 a3 P/ y* u}
0 O, ^8 ?- K. {: A0 {3 B3 B' J
2 q5 D  b6 ~, ]0 U  o6 N4 k0 d, Y8 J# d

6 r- T$ u' \- Q# Q: x  k" D6 B; p( `1 l2 W, Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:/ Y2 H7 m9 p$ n. C. U  ]7 h
1> 初始赋值时:CA b = a;
/ t8 l4 o4 F' m' m" g$ |; r2> 按值传参时:void myfun(CA ca);
% R; k) Q1 k7 C# y7 b3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 / A1 c: b# H" a" M$ L: n& t
复制构造函数在以下几种情况下调用:
4 E2 t# x; @+ d8 |; ~- z1> 初始赋值时:CA b = a;
& b' g/ c. c, c8 U$ f& y2> 按值传参时:void myfun(CA ca);

0 {( k: k  N) s; s第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-24 00:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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