鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 , U$ V5 b( O) Y1 A) B$ d
# Y7 \3 M/ c# H; G; F$ s+ n
class CA6 ~# {$ D1 k& I! J: Z$ I" {
{
$ Z# Y- t8 A8 m5 `4 ?. J. Apublic:
, R) A% L" R5 }% U        CA();
- v: v: |7 j- ?' D: W6 }        CA(CA&);3 g5 F9 E; A* S0 g1 t- a" g* g
        CA(int ,int );/ z. E6 c$ U# K
        ~CA();
+ F6 w2 H+ s. Y6 T        void print();
  w) H$ }, u' \& n6 U: s6 `& k
: C" k; x8 d+ v$ C" c) Aprivate:
4 p# O. Z# g, e" \6 O& r        int i;, F' |; x: u  n
        int j;
' s+ C# S& q9 T' E, d0 ~};4 v# q: ^( ]/ v: M: y7 S8 A9 _
7 X; Z3 q8 B$ {
CA::CA()& V' M( ]& R9 v4 |% _
{
9 y2 j- H$ m6 r5 n1 m* y}
+ C# b1 I6 `. ~$ V! o
, e0 ^- o$ X2 E) F3 wCA::CA(CA&one)
' x3 Z/ `0 N1 ]9 c* r7 c{
/ {" C6 L* T4 l& p6 P        cout<<"调用复制构造函数"<<endl;
, Z8 L% Z  q. r- h& ^* L4 e- z        this->i=one.i;
$ f- C: }0 x7 g6 O; s9 r6 G# X        this->j=one.j;; U8 a$ K8 {, ]
}! B# [+ [# c( I' O

: r6 P, n4 a/ B# n) o. _) `$ jCA::CA(int m,int n)) C' |4 C5 D( C2 R) p0 o% ]
{/ c: b6 ^* i. a4 e9 {5 W
        i=m;3 A9 i( G. U5 s6 F) g9 B+ }
        j=n;2 I4 ]- S; h+ F6 D7 _
}% [0 P3 _: j5 Z

+ B6 p7 y9 A, ?/ x  [void CA::print()3 k- {6 f: s8 N: ^
{0 p! \$ H# p  ^: i  G5 ?" |
        cout<<i<<endl<<j<<endl;
) a0 g& P0 {. J/ I4 b7 d4 R- y}
8 y# ^6 a5 _2 f2 X( |  H
2 D  q1 T% \9 r& X1 s: xCA::~CA()% H7 b# x' ]& }, [" j; h" C8 v
{
+ Q  v5 ~- @; e8 ?. V- N0 K}. |6 f4 M$ T; G7 q2 Q# M
3 |1 l7 d9 d- T7 f
#include <iostream># f) H- e2 ]1 u( E$ V4 t
using namespace std;
! l, A) ^' m3 X2 Z  \% w#include "复制构造函数工作原理.h"
! a& V9 \; H  _+ ?! uint main(void){        5 p% E  u: l4 X' ~* m% H1 W
CA a(2,3);        ' z7 b% t9 r9 w
a.print();      
0 ?" R. |: y$ `3 m  O, i CA b(a);        
7 M/ s' \. f. ?$ yb.print();
$ H0 {- L6 G: z$ M) w2 H. ]$ T) Z       ) V+ [5 Q7 F. G: \8 r1 r
return 0;
8 M) i" V$ m! D. r  ^2 }}
8 R8 V; @2 p6 |; ?
; n# n% l2 }, V7 p+ l) j6 d
; {1 x% R0 L3 A+ [# K: ^; G( }- C( k: W

+ R3 u- ]/ H% o/ a! o. h# @9 Q, P6 A
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
) X% `, [9 x0 i, N% u8 T8 u1> 初始赋值时:CA b = a;3 R" \  E7 z" \$ w% |
2> 按值传参时:void myfun(CA ca);8 p* \0 ~# l9 W" l4 Y" _% U' t
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
3 d* k/ c" n+ c* X5 ^  N  l复制构造函数在以下几种情况下调用:: q; `5 @1 ^' S. O3 _
1> 初始赋值时:CA b = a;. n: J2 @* P, h* q( Y& f
2> 按值传参时:void myfun(CA ca);

2 f3 w' S7 A1 O第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-29 22:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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