鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
4 T* I' Q8 ]( |) l! J' j0 _% {% A0 c# G$ a4 O0 G4 A# M) ^
class CA: s- W! s8 O5 N' k6 q; v, v  T/ r
{. g$ h* M/ U1 S' e4 Z- Y
public:
5 w* r5 X3 ^6 Q, D        CA();  p  d7 O2 s  ~' {. c/ P/ y0 z
        CA(CA&);
/ n' S2 H* k$ |        CA(int ,int );8 a7 R) B2 Z; |0 m' _
        ~CA();! `, I- ^+ w8 H2 A
        void print();
" L) Z  J8 l5 r* Z) v
3 l1 ?1 j9 E) I( a. Gprivate:
1 i- ?/ J' ?. x$ W" a! e# |        int i;
9 ]- P/ j) U% H$ L: v        int j;- L; l# Z& v1 C
};: w( B5 N9 U' q, c: f- M1 }

" A. g/ v0 }3 @7 ~0 Q7 RCA::CA()/ P/ ]. \% W& {, O6 d
{2 _% G% [3 X5 }6 e  G) @& p% ^
}
1 r/ M4 Z$ o+ Z# [: w6 V" D) p  Z. ^- t  [; |- d
CA::CA(CA&one)
8 I9 g; ?! Q) a0 t* N{# m% C6 J" P6 n- M
        cout<<"调用复制构造函数"<<endl;. F3 `! d8 J5 w3 j
        this->i=one.i;
; ]# x3 E' ]6 C8 L# d        this->j=one.j;2 J+ H: b$ O5 S  \
}( B' e$ M$ J% k6 t' B( P
* w  Y' o) w8 ^+ t: O2 K0 y1 K( u
CA::CA(int m,int n)2 m- Q! @) E6 e; q
{0 O  R9 [7 F  S, c. M$ T
        i=m;
3 A  n0 {% V# @$ X        j=n;
8 A6 j5 ^0 s& H& F7 t* X}
: L/ o7 X/ `+ L% i( @' P$ s; u
void CA::print()
" W5 R4 M' n$ _, k3 e- j' ?{  M  T, Q; b, E& ]! ~1 Z5 Y' b
        cout<<i<<endl<<j<<endl;, m1 H/ L$ f6 e' k
}8 ?3 I& [; n- n" M2 N
1 ]/ D6 \$ g& A! R
CA::~CA()' S/ @. D" d" t' t9 E  S  P1 E( \
{* B5 Q3 o3 l0 Z* O
}
: Y& o0 A' y1 x( h+ A/ W& @0 m% _! w
#include <iostream>
7 J7 c0 Q* n1 l  Musing namespace std;
+ n& M2 R+ D% o+ i) I. L#include "复制构造函数工作原理.h"7 H$ y0 F3 E" x9 e/ }/ {( w8 E
int main(void){        
9 |! ~# k0 K' G; ZCA a(2,3);        
9 [% B/ S* r) f% ^2 X3 s& sa.print();       ; M( f3 O' o8 W% ^; I$ {7 j6 x
CA b(a);        
4 l  R" Z6 E* Fb.print();
" c, I0 d0 a8 `2 H, \      
8 Z9 x. @" u! u; a' s* O return 0;% w6 _: B8 [4 V9 R. z4 Z: b
}: d; p+ @5 F: W# O4 [

8 ~1 [8 J' ~7 R, S  H+ K3 B5 U, p; f) B( P8 q7 @. r* s1 s

5 R, r- G7 {# ^0 h5 W2 u$ d9 c- S% l0 G9 B# Y; G) N& z$ C
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 d$ d$ |$ N5 ^5 [6 e1 O, H
1> 初始赋值时:CA b = a;
- p3 u9 b( F& b. }2> 按值传参时:void myfun(CA ca);4 {( s* z# s8 i
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
9 N1 c. ~1 H3 |+ V: \2 m: I0 ]复制构造函数在以下几种情况下调用:) |6 L. F) j' Z' U5 h6 V8 t9 R& V
1> 初始赋值时:CA b = a;; K3 N8 ?+ j/ [; E1 e
2> 按值传参时:void myfun(CA ca);

" {* ^/ g) v, z3 D第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-11-25 11:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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