鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + t, d; g# z3 Y" r- |$ f

) `; s8 y) e( U! e- \6 v+ e6 mclass CA
, l# w% l! P. J/ M6 v% l: d4 k{9 B- ~6 H( ?& Y6 m2 k8 Y; r
public:: w) `  o6 e3 H
        CA();
. i" @4 Z( x/ K        CA(CA&);, N# u7 T: m5 F' m; o& O
        CA(int ,int );7 U% _9 g5 T' @7 \; h
        ~CA();9 T& C1 P# a& Q8 s4 Y
        void print();
! ]5 z& i5 I' o# x1 C
; t  g6 @' b7 V3 N/ e& F+ Eprivate:
& A1 C& c* g3 ^( m" B: M% P3 u        int i;
0 u" A1 @& ?1 K- h        int j;
, s+ o% ?" W, N. I' u$ h};7 R9 `' I7 {: v" n: M' q, A2 H; G# l! A

5 t- m5 q. e. g* \  wCA::CA()
, w8 x6 m* o) \7 G5 k8 T1 N4 A{
; a% D4 M3 W, g. n}3 E# D( T% v; K- x! p8 y
- ^( T% B* @! W. O
CA::CA(CA&one)# ~0 Q1 T) P  R9 o9 Y; W
{1 \) V3 S) w& e$ c- I; V- W+ a1 P
        cout<<"调用复制构造函数"<<endl;' T) v. E- V: g( C
        this->i=one.i;
* f8 I  H0 c4 R; N- k, N        this->j=one.j;! y9 O% U/ x$ M. m& i) {
}
/ |0 p8 u  U- A+ N5 Y3 m% j) i# {
CA::CA(int m,int n)
+ r1 F/ N( B" p3 j{* H: p/ @6 @( d/ [; d
        i=m;" `, R( J# @2 a5 A# A# X5 f
        j=n;
3 Z' H1 i9 u; e}
/ i1 o+ b2 _2 i0 b' V: z1 j% x- a2 {4 c6 m
void CA::print()
/ N2 N# O: L" V5 P6 b% O+ \{
+ Z7 R9 u, q- c4 j$ c9 F        cout<<i<<endl<<j<<endl;3 }# f; g" O" Y; F" F
}
; c; F0 A5 Q6 A6 M4 t
0 p: i$ E7 M5 Y! d( S) N/ P3 fCA::~CA()8 i9 K8 \1 S. H8 v' @' P4 Z- c
{3 g5 A8 N2 M5 }; W6 K6 t4 t
}
* |5 e' C6 U  t  C( Z5 w2 r. b0 k% @0 d6 M/ p3 V, q, O( e9 D7 ]
#include <iostream>4 K. K5 |* g7 v
using namespace std;3 Q* \0 c" z: W, F) c
#include "复制构造函数工作原理.h", R4 |, ?& `8 m6 ]) f& Q7 H
int main(void){        - [0 _3 Y9 x) |& |$ ~3 B, h* S
CA a(2,3);        
/ Y7 r/ C6 X$ n) Z4 pa.print();      
. O* z( e8 P* J8 Y, t0 I6 T3 ] CA b(a);        " {" C$ C. d$ \- V' e- F
b.print();
+ T& u5 o+ r9 O) B      
3 M% l3 i. O, W) }% Y: ~+ j return 0;: ?1 Z( d; z0 @8 e# [/ T
}
8 T; m) x3 k3 z0 \- v* K$ n! s; `8 Y: i  s% S; R

% a/ W: x6 K$ g6 a7 V1 V) ~: ?* i2 D

7 t* E& g7 V) \* I% X
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 [* o2 f1 s  \2 z" e- w
1> 初始赋值时:CA b = a;: t9 G8 O( \3 F* Q  x* l9 J
2> 按值传参时:void myfun(CA ca);
7 I; R1 z% c0 t& i9 i3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
+ e) _5 l- M! Z, Z5 d) a, y! }$ v复制构造函数在以下几种情况下调用:7 o( n3 c/ c9 G% x, D
1> 初始赋值时:CA b = a;  L4 L& U. N& u7 V9 w& f4 w) R
2> 按值传参时:void myfun(CA ca);
9 I/ p$ ^) v4 x5 Z, r5 n
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-22 00:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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