鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ) _+ z+ g  [2 A# k
1 y' F; W( Y8 }( `* c! }( [( D& C) _
class CA$ N2 Z+ l3 s. e1 h' ~1 K8 P# b
{: h- ?: [7 S1 X8 H, }! U6 g  {
public:
: M; A& \" J. t8 G7 W' P        CA();
+ l+ D9 W# m  b3 F/ t$ K, L1 {        CA(CA&);
) h7 N- m) Y6 g+ N        CA(int ,int );+ t, ^6 ~8 A3 b' p
        ~CA();
. m8 P8 G9 m  x        void print();
. B2 S! o' G7 ~* O1 x7 {# d3 s
; r: v4 i& w# N; S7 {private:
* U; R3 T# h1 T2 p& ^9 D0 A        int i;$ a* F# Y. X$ A; u1 S/ ]9 i
        int j;
0 J- c- F6 Z; B};
9 M% D; U. W+ s- j& k& I
3 Z* r7 S# c" l# A+ jCA::CA()- |  E3 b! a; e5 o# l
{
( E2 k: l8 V' F/ o. u}  A. e2 Q, m2 {2 v, b

4 k" y7 t: T+ D# \. t1 _CA::CA(CA&one)
  F  x+ S. e0 s# N{: [% V& s/ S  C8 r
        cout<<"调用复制构造函数"<<endl;
  G' ^' F% h! ?: c: C        this->i=one.i;
2 m- x/ e* T; b6 f: n' V        this->j=one.j;
- A4 v" F3 E8 ]' F# K' C}  b9 c7 A% Y  p0 K

7 p7 H% S/ W# r+ r2 UCA::CA(int m,int n)
% \1 A0 i/ x" O( ~{
: b* s9 d4 c  ?% T        i=m;9 ?3 N3 V+ @( {" m: R( z
        j=n;' Q' M4 U% h  |7 D% E
}; q% ?# f) |; L; H

4 V$ a) C, }) c8 ^( g0 xvoid CA::print()
5 P$ r# Z  Y- ~$ A, }8 b/ N( V$ K{2 F$ ]( M- J0 Z3 R( {
        cout<<i<<endl<<j<<endl;5 z; X! R* _  ]0 Y4 N' z% x0 F
}$ Q! m' o6 k! H! ^
" y; ^) n9 G$ P  [
CA::~CA()8 z; u% o1 s# p& a  x8 q
{
  \8 h# `  {" E8 p6 }- _}
% }- H7 H" ~+ ~  x8 V# s; e/ x8 ^  J- P8 W2 g  B6 w% ^
#include <iostream>. ^& C) m( e) k& |7 a! ?- e5 n
using namespace std;
0 y4 G+ A8 u5 ?2 B/ N! E#include "复制构造函数工作原理.h"
: ]( T: z. R8 s5 L, f7 e7 `int main(void){        
. [2 F8 e2 I- v" @CA a(2,3);        
& n: r# G0 `% J" u5 Sa.print();      
/ B- M2 v& R/ d# e, e9 N0 P CA b(a);        
9 z1 M, p9 _% j3 X' \b.print();' N  u, b5 [3 X' b. x2 h; e
       - P1 N9 {9 V  ^+ g% ^) U, d9 U" U
return 0;" m6 `7 A: ]! B  T
}
4 Y+ F0 N' A+ @5 Q. R$ B9 N- B. d7 _

  F! p' S7 T0 r! R
+ m3 l. N7 @4 A0 o0 [4 x/ O
( W/ n( v! h* l! v  h
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:0 T- W3 _- c5 J- [; y0 K% N! T
1> 初始赋值时:CA b = a;
$ Q+ X# T! e+ s% I; r! T2> 按值传参时:void myfun(CA ca);
; T9 P  z$ x; [5 V3 [1 Z, m3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 1 l8 n4 |8 P. ^- ^0 Z0 j
复制构造函数在以下几种情况下调用:
% ~  m% f6 W6 b3 a+ d1> 初始赋值时:CA b = a;% w8 ?- p1 i% }, u; P
2> 按值传参时:void myfun(CA ca);

% J- Y% h5 K) Y* j  i第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-17 04:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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