鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
1 j# A6 Y* F* k! O
2 L7 O6 x1 ~  c9 S  {/ Y) lclass CA. B0 R9 @# c8 g1 X$ m) `
{* d- i8 d0 ~; n( u9 v
public:( H1 W) Z5 x9 _1 T% m5 i
        CA();
# m$ b7 X4 V: p4 w+ Z( ?- p        CA(CA&);8 A# r9 ?/ t: w6 t. X
        CA(int ,int );0 Q/ C# a( U: s$ K9 d# A5 }* f
        ~CA();( D/ B8 n! `9 h: C; j  {
        void print();
  u9 @: m' X' h3 M( `; K" m, z  U% B
private:2 d* j- f; a6 M: Q
        int i;% `+ K" ^5 @& @6 A
        int j;, n& x" x8 E  Y1 p
};
1 A6 d3 l  C7 T- `$ j9 p" K. E. Q+ |5 e' T6 T
CA::CA()
4 O) J, {4 I+ ?' ^{; T9 Q" T$ c6 R
}
; b' d. W# n9 i, C' l
( Z: U! N! }- J& y+ @2 DCA::CA(CA&one)
8 s3 }! V( s* J( i& X; q1 G1 y{
5 _1 L  G* z' r: ]+ |& Z% t        cout<<"调用复制构造函数"<<endl;9 L. _# U9 u( j6 ]
        this->i=one.i;4 ?, H/ t% p8 P0 x/ @
        this->j=one.j;# ^- d- l. I; {, l7 t( Z
}
$ I* E7 C% A2 [' t  i  y7 x) T( ?' d/ J  f+ t: m$ g! B7 C( ^
CA::CA(int m,int n), @, u( ?3 D# I5 j5 W: v7 r
{
2 K7 m0 J5 i+ S2 w: b        i=m;- C; f. O  R9 ?' E% X7 I, a
        j=n;
. U) f9 B; M3 j* W( g6 v8 B}5 P5 g! D5 a  c3 W  q

8 Y6 d4 b1 v; o! H! Mvoid CA::print()* T4 {8 a% G+ X( v! l
{7 G3 ^/ r$ d4 p
        cout<<i<<endl<<j<<endl;$ @" V& }3 `6 b1 x
}- j1 L5 J+ {$ `2 p. r3 ]; J
4 c# U3 @# n* d
CA::~CA()
; F6 k2 @1 `( h1 i{1 B  L( Z0 y0 s$ w9 \
}/ B& z% I' U2 K, l# t2 T; T& x

  K. I8 A  e5 o  @" b, x#include <iostream>
* I2 f% G+ J4 Q9 k( musing namespace std;
' Q% @* h6 e1 L#include "复制构造函数工作原理.h"
3 ~! X# R0 W9 N- O( E! F; |. U; Hint main(void){        
# M0 i! K9 j6 n1 t7 hCA a(2,3);        
6 S3 M+ @- V- ~2 f& da.print();       ; l, P8 k3 A& a
CA b(a);        $ @/ s9 H6 I# p% S
b.print();
7 @+ w2 b5 m& ]; l      
- |1 h9 a  U, }) o- f1 R$ I& H- N7 f return 0;. I! L- Z& M( W' P1 @$ b6 @: D3 H
}
8 {7 _/ A9 d5 `1 R' i, n$ \% k) s. ~1 ]4 o  P4 h
1 c% D5 l: w. p4 _9 l$ s9 O3 D
  [% Y0 ]9 l( U* D# k( `
; {& W7 e) K/ ?3 M" e% b: F6 |$ [+ C2 s
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
) P4 `( ~$ L" c/ s) z+ p# o1> 初始赋值时:CA b = a;
8 ]( V$ ~& T4 u8 E5 G2> 按值传参时:void myfun(CA ca);" _6 K2 n# h! v8 G# i
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 . V4 E0 Q( [' S% M, s+ g6 m( e4 _
复制构造函数在以下几种情况下调用:! q4 z$ f% ]* T6 a8 y, R6 J" N. O! v
1> 初始赋值时:CA b = a;
: H3 T, N0 I" u2> 按值传参时:void myfun(CA ca);
" p, r3 U% N1 [# A0 _9 U9 g
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-9-11 07:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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