鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 $ F: A0 B( D- S0 o0 w9 z0 i
* Y( r1 p& x( a/ J4 a5 b" [
class CA
/ z5 D1 O4 D/ \7 C{
, ]) j6 p, x2 ^3 t4 ~) R" _$ Fpublic:4 K4 y1 E0 s3 @3 i& u
        CA();
- q* B) S) P2 }8 ]        CA(CA&);
# R" `; F* k, |+ t! e        CA(int ,int );
) A5 u' a8 `/ K2 Y# x# y8 Z# v        ~CA();
# Q: l. E* v( }! u        void print();3 H5 X5 H9 Q$ Y; E' h' }
% _3 ], P% d- I1 G8 ]3 s; B4 a$ `
private:( ~& Z( d$ i- [4 ]% X7 c' ]
        int i;
  D( d& ?* \; N' Q0 H        int j;
/ h5 B+ q9 Q7 C# _6 X% y};( |/ I5 o# h1 h7 u# w' U
! }3 r. ~' |% d' \+ Z8 d
CA::CA()+ w7 V# w# R, n4 y( w3 o8 l( O
{; R9 T7 b2 ~6 k# I
}
: ^/ `- }* d0 `! H6 p3 C
8 [, y& n- U' n2 GCA::CA(CA&one)
4 f+ l: k  O2 P; C& f{
* \+ c1 z# i- L4 E; H! h% D& R( u        cout<<"调用复制构造函数"<<endl;
, e" T/ @3 C# N" M        this->i=one.i;1 U0 {; u7 E: U) T$ e6 |" c
        this->j=one.j;) \- G6 `: O& V5 b, H
}
: ]7 p  R5 i; b  k% ]1 g: f2 x3 ~: E/ w- m+ ^
CA::CA(int m,int n); A1 a% g: h5 P+ }/ `% z
{
; G- i* u& \$ `- Q3 |0 b        i=m;
$ \' o  B- l5 N/ D& n/ n        j=n;
' Y- C$ b8 G  f" Y1 j}4 P% v2 [- I, {8 t

4 a* B2 w% M. ]) k5 W0 M) ~5 _void CA::print()
3 t' y, P/ ]: A6 \& i- c# y3 U{
: O  F: C. L2 m9 i6 o        cout<<i<<endl<<j<<endl;
  i1 `+ }7 Z4 U' k4 I% y7 o}  v! |9 R9 }+ C
3 [, }8 c9 C8 }6 W
CA::~CA()# y2 ]  ?9 v, [
{
: s% J; U7 S! Q, T& J0 B# k9 {}. C/ J; E! q) {, v4 S: a
" z$ N8 V: f3 a, `: |
#include <iostream>; E% A+ e, Y' V1 _5 E
using namespace std;4 F) c0 [+ g& r5 g% G) N* u* v
#include "复制构造函数工作原理.h"& V8 C: W7 o1 o6 ]* b6 g* q
int main(void){        ( L! `# x$ M' d9 l- [4 v
CA a(2,3);        
+ G1 q/ v' L/ E+ q. aa.print();       5 E+ @, B& O6 P/ Y6 Y1 p- M
CA b(a);        
, O6 L0 g& H/ bb.print();
* }: u9 P% e1 {& g' |4 o* l5 P      
# z1 G: n# o+ Z& N return 0;0 P3 M( v2 `, [$ m7 j& `9 d0 S
}
( j8 c( s" y: N
2 H/ `& Q' y3 O
) K# S8 j5 l" d* `. _% p; Y# e, }4 q& t$ h- c
, z- O- x, S0 z2 w& Y; K: F
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
" I6 ~9 h0 a% L& x" G3 {( j: e. O1> 初始赋值时:CA b = a;: o7 \4 J, U$ n! g$ e& A) j* ^
2> 按值传参时:void myfun(CA ca);: z7 {( c4 W6 u% t
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 4 ^1 l% _$ D, h# _" `
复制构造函数在以下几种情况下调用:
8 ?* Y, A& P/ |7 o$ ^0 N; ?+ Y- f1> 初始赋值时:CA b = a;8 n; C8 _4 {. N* O. J5 E+ J
2> 按值传参时:void myfun(CA ca);
: f. T) O9 k# n. ]
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-9 11:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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