鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
3 @* Y& G6 s( T, i* X. C3 c" X2 |* `/ B% a1 M! d
class CA
' p% G7 i# T8 G" @2 J! x2 l9 }+ M0 p{
3 R3 r. P/ }8 X. Dpublic:( I$ G; p/ O9 {. s
        CA();" O1 A! Q$ u; z: b: I* ]1 t" K+ l% b' x
        CA(CA&);
3 |+ `4 O/ D6 I8 Q5 |( \1 k9 a        CA(int ,int );
! {4 {0 V; D! {        ~CA();% d- X: U, s: h+ F/ S
        void print();+ }9 t$ Y: X+ s8 [5 Y9 M! p8 a4 E4 N# k
2 k" H% k+ F; m1 ^
private:# K4 p3 u4 K9 H$ g9 D
        int i;
, A2 e7 W. B! p3 R2 ^+ X, k' g" G        int j;# Z" j0 u3 i0 P1 l3 G: Z
};+ }+ Q, {* T: o% Y# M# H) H
  @. W9 c, b5 m( k2 B! b) V  }
CA::CA()2 j5 T& g( i. `, m1 A" r/ A5 N
{* m3 t; e, z6 e; y8 Z1 l
}
2 q; k; M/ W+ m% h% d/ i4 ^: p- N7 y+ `
CA::CA(CA&one). z6 Y: W6 t, l* ^7 \6 ?* Z
{1 U2 g  S& p% E3 R, X( ?
        cout<<"调用复制构造函数"<<endl;
6 g7 I( V$ e3 F/ d9 l2 s        this->i=one.i;
  o' w" q9 Y9 u4 C        this->j=one.j;
5 g6 \1 z5 ?2 r4 n}( Q7 e& W7 v" j5 u; x9 `0 U
8 O- v; P- h3 U* D2 R: f+ `
CA::CA(int m,int n). t4 N5 F" k  w7 M# Q# ]3 |
{
% Q1 R  h3 G1 j, p! a- [7 g- n: s" z        i=m;
6 t. H; ]$ c) Y# V5 y7 S% o# d9 l8 ~        j=n;1 t. @' k0 g  h+ o& v' ?% N
}* s4 Q/ S9 @2 P2 M; J
. e, c. O) y/ i0 ]6 P# g0 l
void CA::print()" Y3 m: F, M, ^) Q3 m' R
{9 h5 y2 I6 }  L' ^
        cout<<i<<endl<<j<<endl;: W  o8 ?- l2 ~% G
}1 U4 M7 n$ T* S' x
7 [+ [) }; X! [, L1 h) N
CA::~CA()
9 F$ t' F, n5 [, U/ w2 d* h{' i" @+ Y) o. |
}
& F2 h+ g; P8 W" o  v
! s- @' G# o  O+ S0 [$ w: c0 \#include <iostream>4 Q% x$ B2 d( Q" A: N
using namespace std;
+ f1 Q0 V) d3 S, ^' M#include "复制构造函数工作原理.h"1 d5 @2 N8 t/ c8 c: G
int main(void){        0 ~! \) [% k! X! t4 v
CA a(2,3);        
8 E, @4 c. i/ x5 la.print();       ( [8 m- m  i5 s) p' c5 y
CA b(a);        
, D% G  E+ \6 y* Z' D- h7 u: Fb.print();
  f7 o+ W. O6 L6 P# p1 H% k2 a      
+ F- s- L. s; x( j) P return 0;. o/ s( L0 u! L/ U- @
}* v$ }4 S4 P5 X
0 b% V: D* G. ~
, P3 i8 t- J( E" e  m8 H

: @- T+ c) j! {0 v/ S' q
8 v7 F: C! V* a# u0 U( @
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:4 W4 X2 V- ^: @- p! ?3 Y% ?7 o, d
1> 初始赋值时:CA b = a;
% b6 o; c0 n" [3 r# X0 g) z2> 按值传参时:void myfun(CA ca);
+ {2 B1 s2 d9 ^) e7 v# B3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 # H) m1 @4 _7 O+ F, i  w* g7 h
复制构造函数在以下几种情况下调用:( Y4 {9 W* U% m' ^5 e7 B: O
1> 初始赋值时:CA b = a;: \# F0 V* g( X" H; w
2> 按值传参时:void myfun(CA ca);

& z0 T# s3 b4 b) r第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-1 23:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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