鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
3 O! v; P2 l1 V+ _" C
: S; G7 K. i5 }$ {+ h* E4 ~class CA
: M1 L/ ]( s$ Y6 T" R! K{
$ x3 o2 x0 E! p4 ^public:
8 k% L- F) c. O        CA();
9 B4 f$ T/ H2 g& k% Q6 F: z, _        CA(CA&);4 f% g2 B( d8 }  q: s
        CA(int ,int );
* ~) z( z- R2 z8 ?( K+ a        ~CA();
7 K" m, L* Y( e+ L6 b        void print();
$ q9 I/ ^; R% |, s. ^. o
( X9 D. M* m4 f% p1 R% I1 S$ lprivate:
9 Y4 O: r6 h3 t9 K        int i;8 h% D4 W& \, b0 @: D$ \
        int j;8 {+ X# {2 i' ]% a/ R: W" y# I# @- F
};
: L/ y8 _9 V$ |# o, W) R. R& h0 f& \+ ~- p" f
CA::CA()
6 W. |' }; f0 X5 ?9 g2 C! i{. S! a6 T+ X0 D1 S% ]. Z' i# b
}+ F& P0 Y% e9 F: Q
6 u! ^/ a1 ^3 _0 x0 P% ]
CA::CA(CA&one)
2 n( ^% g% w6 R/ C& \{
- K5 N& C5 A0 e# g: e. S        cout<<"调用复制构造函数"<<endl;( b# b7 j8 Z7 C0 M5 B: ]
        this->i=one.i;
+ X# {; o. h# |' O0 I8 K        this->j=one.j;9 a2 V% q. Z3 _# V. X/ Q
}, S9 ~; K- R' a2 e. y1 J' P* N: G

, x& L  r6 E. I. A, UCA::CA(int m,int n)
* o: X, z" R) X6 V4 }- F{
' k# A( v- f6 X2 Z4 D/ \+ e( F        i=m;; W/ M* h. y1 K1 k* s( t% F
        j=n;- Y0 W  W, p( c1 s5 X
}5 M5 |2 X- ]6 d* d! A$ d7 N
' j/ @& ?$ Z7 {/ W4 H; |1 `- Z
void CA::print()" Y% {- q0 o. C1 x
{6 n) K0 }5 w" W, v# W0 f
        cout<<i<<endl<<j<<endl;2 ]4 D; e+ D+ t: f1 x; m% ~, Z
}& ^. @  j- h" l( x( T. F) n

, \9 q& [: x( G4 v/ H% ?; K) ICA::~CA()
1 M* q* ?; O% A* _{& U: f  d) P" i" T+ b. i
}; d  n: K( E; O9 G7 f. i
9 L( x" v% A( F5 R  J4 V1 s4 B& F- {
#include <iostream>* [' z7 k  N# Y9 [9 g
using namespace std;$ X% `, j7 [5 U) k4 y0 l) b$ J) [
#include "复制构造函数工作原理.h"
2 q2 u- b# t$ i7 kint main(void){        ( _8 e, N* z; o# D
CA a(2,3);        . n4 `1 r$ s* v  `$ L0 u# {- a
a.print();      
: d: ?0 Q" F8 N- X CA b(a);        + ^# [* N) J" h) p3 d
b.print();1 F/ J2 r% r4 ]! a5 z2 i: s' D2 X' Y0 c
      
! X, v) B; P2 l! c" o- ~9 p9 R8 V2 n, k return 0;
7 x- R/ S( S) B  R( w0 O}% S7 T, f- u' v
: a5 R! ^! m9 @5 O' e
3 x$ ]1 f6 k( k- o" y. {+ q
! W2 r  d' x2 w: {8 I

( j+ Q3 [1 I# b& n; k, }1 @2 X
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
4 q/ u' l: T- O1> 初始赋值时:CA b = a;
  u% c7 Y4 Q, ?: c; W) R; l. ?2> 按值传参时:void myfun(CA ca);2 H0 c; \; z8 i" r4 H7 `9 ]& a
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 % P0 M  W$ @  ~5 t
复制构造函数在以下几种情况下调用:1 _, |  Z* M, J; d: d
1> 初始赋值时:CA b = a;# E+ A/ {) N) {8 T2 r) @% Y3 v
2> 按值传参时:void myfun(CA ca);

) u# R  ~& Q$ L0 d3 ]- H第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-24 08:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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