鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
3 Y. z7 w2 E9 F1 @8 E% h3 v1 X
5 l; g$ v) `4 _/ N6 v. lclass CA
+ t& T" l* x& x4 }{
1 a/ O4 {6 y8 W; Fpublic:5 n2 Q* r( T& Y( i# w
        CA();
7 i+ v; a4 B. |  J; V4 W- e        CA(CA&);) U  H% X9 I! g! I
        CA(int ,int );6 U; R( y- c: E  T
        ~CA();
- h9 r- [1 H, {; ~! w0 {& ^        void print();
3 t1 g" M* w0 l9 @0 w3 F, F+ X& T( v4 k, L) _4 s. e2 M' |
private:* k: B7 G! X' v5 A7 F9 e/ l
        int i;5 s# ~( X& t! [
        int j;! u. _4 Y: e7 D& U
};
  ~  Q" h: O0 q: k& H
8 d* @5 U. a8 j. ^% ~CA::CA()1 H& \, p  D6 _! D5 Q
{
- a2 o& x. ~; T}
% ]6 K4 G6 A* P
- F' }4 g: W, G/ q, CCA::CA(CA&one)
0 C* Y0 P( W: _9 @8 N{5 Z; U% N  N9 t, R4 U2 p7 u0 V( a
        cout<<"调用复制构造函数"<<endl;
- ^: {0 o1 J1 ?        this->i=one.i;
: Y" j# C- T) `        this->j=one.j;
' N* [; T4 e$ A}$ [! I7 A, ^# ]$ f' A5 n" N. f' f6 ^
. K2 Y+ c6 C( c: A; d. T1 \; K
CA::CA(int m,int n)) {4 g, A  Y1 J1 G+ v3 N3 L: J: t3 {
{5 j( u# t  t# ^+ H  M6 @8 z4 Y
        i=m;
! v! _6 ]$ B! k* C        j=n;& M. w, h6 f9 r  D9 O( ]
}
) F3 O  N8 h3 j" g3 q, E" ]+ h* W7 s5 {- C* h) S
void CA::print()# J& y& T7 m: J
{
  i4 a: m2 A1 u5 \8 S. d        cout<<i<<endl<<j<<endl;3 K& }  S2 k+ O; f- b/ h/ x
}
" C& |) {  u7 p: W0 Z1 u1 Q1 c: x4 D7 F$ f
CA::~CA()
" g  x3 j, W8 Z3 I% L$ y{9 R, w+ M+ T& s* j2 D& J- g
}
  W& D' ?! Y9 j) c! @$ z
  ]; L/ e2 Z2 A% _. }#include <iostream>+ x2 S% n* f) P$ G1 x3 i; n5 J
using namespace std;
& @2 S7 R8 U) y: c#include "复制构造函数工作原理.h"1 i1 f* c5 v1 V" V& `
int main(void){        6 E5 Z( C: V( c& X1 c. D* z
CA a(2,3);        
; s: a8 \% H  E3 ?6 P% {- k- |8 ga.print();       . Z. T' n5 z5 O4 i, [; B
CA b(a);        
5 c- S* W; p" e$ ib.print();7 k* T4 z* q2 Q% [  @& E
      
# v% h0 |" Y" d  N return 0;
/ E4 ]' U8 o4 i6 Y* [}& k( W% n  y5 K
0 P, v$ `7 b$ \/ z, e' V5 d8 E
& }/ I. p2 w: o  o, [
" e  q4 }6 |9 c8 d7 f- r* N

8 ?$ n- e' k( K
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:$ _5 E4 b& C2 M) b
1> 初始赋值时:CA b = a;
1 V5 k% r; [3 q9 O( p, G2> 按值传参时:void myfun(CA ca);
. R5 w( ]0 |* r3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
8 E1 m8 O  r4 F) L$ X复制构造函数在以下几种情况下调用:/ H9 S! R( [: ?, Z/ p
1> 初始赋值时:CA b = a;# H1 n: z* h5 N" U: |7 _: Z
2> 按值传参时:void myfun(CA ca);
, G" t4 b3 M0 U/ x% F: P6 M9 o! ~$ p
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-22 07:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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