鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 9 Z5 S% V  t8 s% ]

  A# k9 _$ c2 K* L1 w/ ]4 Xclass CA
" z. B5 _& i, I  p{
. m+ {- i+ [) b" K+ |# H5 ypublic:
* I! f/ s. S" O5 b% C# b        CA();
: D& ?6 U+ n0 V$ t3 m+ K  J# F        CA(CA&);& t- b7 I8 B8 H
        CA(int ,int );! [1 @* R" T, w+ [6 o3 \/ y
        ~CA();% N) b% Q7 K3 Q. ^8 E) ~
        void print();: I  y# |4 x* z# c  E% e
1 c$ \! b7 s6 g0 v
private:  C' U1 s# H' F2 H( c( @, c$ l
        int i;
5 T( L; G" r& P: T5 F        int j;+ t# |$ U, o  z8 H, O$ T. J0 }' i2 b8 r
};
1 I+ c; p5 a  `& d6 R5 N, x! m; `: E) Y! b
CA::CA()& i/ z! B- ?: w. B2 x. ]8 x* V9 E
{( T; v+ V& \" ^' V3 K
}- j0 F  o  I- c' O7 k3 J
, I, b" I: u7 P4 [" ]" z# [( z
CA::CA(CA&one)  n, A9 [* G6 U) h2 m
{
* T- k! N1 k5 O2 s        cout<<"调用复制构造函数"<<endl;
, k" s: X5 y7 m5 Z, M        this->i=one.i;6 N. S  g5 t5 |1 f' R( X: P
        this->j=one.j;
+ R4 n( a; i0 O: [4 g0 F% Q. D}
; B$ Y# q; m9 F0 P- W3 M8 e7 v
6 F- j$ I; S3 K4 ACA::CA(int m,int n)1 L! f/ P/ X# `* H2 d! D
{
- ]- {4 C& |7 C) o1 a' `        i=m;
% O/ S, H' s4 z. P% F  o6 F* H        j=n;
7 y9 l+ B! D. h  _}
; t& [6 I+ o1 L1 w: L, q; t; c6 l% Q! P6 n* g* ~
void CA::print()
- l; D9 X* @( X8 }{
7 p; h- Q- Y. u/ w        cout<<i<<endl<<j<<endl;
4 x5 @& Y  ]% u1 g9 F! ]7 L}
" d. u/ @8 [% s
2 q4 _+ _0 j2 }) `* QCA::~CA()- a3 X0 [, V: _! O3 a
{
9 r8 G) U4 x9 s* g* {}
# N8 ?! q6 D! s# Y9 f+ T) h/ `2 ]& G$ V5 r
#include <iostream>8 N. y& o3 Z: i! d, G6 g
using namespace std;
8 S, V# t) {3 Q3 ~#include "复制构造函数工作原理.h"
8 p& L, s. Y* {. F* Zint main(void){        
5 W( R) Q' d. j. |6 H# l% x. Z+ y4 hCA a(2,3);        
+ l' |  C$ O% n) |/ {8 k. ta.print();      
. ~2 n* D1 j+ G) e, Z CA b(a);        
$ T2 y% d* T4 g2 ]b.print();
4 i/ Q7 P3 J9 u' C& ]      
5 H' D( l# {6 l# d" c6 \ return 0;9 F& m* I7 l; p2 t+ D+ Q
}
) ]5 ]; `* b* ^. {9 e; c, o5 z  {6 L
; ^; g5 C# \; N, Q

2 |' x) j9 d, m6 x: Z- z7 S" ^" J, Z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:. g7 P9 g, H& a2 E* T: p8 H* R
1> 初始赋值时:CA b = a;/ X7 m' }+ F$ z, `5 c
2> 按值传参时:void myfun(CA ca);
5 a: T! }! f4 M* K' v! ]3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
& N; O: h& X- I; a$ i8 t, o1 H复制构造函数在以下几种情况下调用:
( B- @* D0 C" @) W% V$ `1> 初始赋值时:CA b = a;
$ w% }8 B) i% X# [" v6 ]2> 按值传参时:void myfun(CA ca);

1 a' t2 _! g3 z; F7 ~第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-4-27 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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