鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 ; c2 L6 J; k3 J. V& [/ i0 X

( H, Q- {& M2 [  I3 a  P7 v7 Zclass CA0 p. U2 |5 l) U
{3 |+ E* |* t- u0 q
public:! d  x7 L0 E# b; \2 V/ `. ?
        CA();
& f0 a3 ~' T& A' W1 V8 A# n1 H; u5 \) N        CA(CA&);' q* X; q' Y6 F) P! O$ \8 K
        CA(int ,int );
4 l  t6 r! e8 o7 O2 b9 E+ {        ~CA();
' z5 e7 |7 v/ y! Y# V) i% x        void print();
8 T* N; e: R3 I" Q0 U. Y
; p. D& }8 F; o, a! O  Rprivate:1 H' `7 b/ ]) F! v
        int i;
; ^, L- @. T1 \, N7 ^6 p1 h5 c* }        int j;
$ u3 p  ?# ?- K& ~};
4 b; Q: ]" J8 N6 j& `# j8 b. A* K" W0 g
CA::CA()
3 }( Y: F! c0 j: v$ x{
# |1 A2 X( p& c3 X9 r( e# \}
: G4 b) Q* w4 P4 }8 c+ e; H  y' S9 s; m
CA::CA(CA&one). l% H' t2 ?9 h6 z" |3 v
{
7 n2 S+ y+ t+ i5 M& z) F! @        cout<<"调用复制构造函数"<<endl;% m( j6 T& ~9 v6 v1 T" G- j
        this->i=one.i;/ ]7 w9 Q1 S$ r: D' f' k1 x) o/ ]
        this->j=one.j;
: w5 m/ A; q7 \}
2 X* B7 }# Z2 c% b8 p6 d. |1 L
* f2 x5 f2 M- p. o/ R( qCA::CA(int m,int n)
, E; Y8 x: c* w- m{9 r2 s$ V3 v. [  l3 c
        i=m;
$ C/ e# T  q  c  a$ d6 R* l        j=n;
5 m4 q7 g( e) H}) G3 Q% r6 Y7 z7 `# v1 _+ d7 C
  V" q  V) i  C
void CA::print(), p6 F; J: w0 r' \* _- u
{
, |9 {% @; r7 o+ I1 c; x. c        cout<<i<<endl<<j<<endl;
% _& u4 w6 s5 |/ x}4 N: G$ {, N2 W7 c: W. c
; G5 N7 x6 f# a* n6 T) ]
CA::~CA()
, Y8 D& c( ^4 [5 ?; B" K{
6 D4 U5 j5 D8 d: a: v6 H3 N}4 w7 t. M* |! W
) I( n( n# @' L4 L2 z" z9 @3 z
#include <iostream>: L, c" g/ \7 k- K
using namespace std;! f% E) l+ x! k, |, M: R( I! W+ `
#include "复制构造函数工作原理.h"' i6 S/ F* Q" @
int main(void){        
. T) s, b5 B# G( {9 Y5 B! iCA a(2,3);        0 q) ?% V+ e! Q& C1 y0 `
a.print();       8 S( {1 h2 G" w' z" `: l; o
CA b(a);        + _- x) a( k+ N$ m0 L
b.print();: L" y: V* K, L  S
      
: l7 z; [5 S9 _2 p2 P: `/ I# _ return 0;1 i! J3 e0 p# i* w
}+ s) l0 a( ]  ~, P0 G8 I
  x5 f3 n: W/ t$ P( M/ D! A
8 [# P. u9 }/ G6 F6 `

% b# `! f, m% n8 O; `
: q& o! v2 y8 b# K* l
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 ]2 b9 u5 T; O% Q% P1> 初始赋值时:CA b = a;
# o( o1 f1 }% C$ Z1 y2> 按值传参时:void myfun(CA ca);- X/ W' J2 J* ]! J. Y/ o# m
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
2 u0 B/ P  [  S* |复制构造函数在以下几种情况下调用:3 d- s, i# e/ B/ `  u' |6 }% `
1> 初始赋值时:CA b = a;
/ W/ Q* v# s' X# {2> 按值传参时:void myfun(CA ca);
$ M4 g+ @1 |* h! V
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-21 03:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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