鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 8 n4 Z0 F2 }4 V5 c, f  `5 |

0 c7 W0 l: b9 B7 A  |4 Tclass CA
  e' V# w  f1 b4 s{$ y  |/ [% o2 g7 h: F: |
public:
/ p3 H3 i- n9 n+ b2 @        CA();' ]$ U9 n" T% Z# A/ U6 K, y( ~& N
        CA(CA&);" E: S" {; F7 I; e0 f* g
        CA(int ,int );4 i! k- P) Q* E1 ~: m
        ~CA();$ `" W; L( ]% Z" l  y* {
        void print();% O( A. {6 B) {! }- u, P
  q( g$ R) c" w) z3 A; \
private:7 U# z7 Y( O4 r5 T0 A* U3 I$ _
        int i;% Z1 t* @& c+ P3 S
        int j;* J$ I- n. ~  R% E
};
9 E5 R5 }3 Q2 I; r
" X7 u6 J, m& N, \' yCA::CA(), x8 \- N# Y6 F' w% B! t+ m
{
- @1 K3 ~- ]( M' H# }}! v7 z5 x. \, G$ N( k5 l

3 `0 a7 F* Z/ }6 R( R0 bCA::CA(CA&one)+ o" @; G, ^+ z! O
{& ^3 B( L$ x  [0 C5 f& S% F% G
        cout<<"调用复制构造函数"<<endl;
- r, ^' ?* A( K0 P+ z8 \        this->i=one.i;9 v% I7 F& l: ^% P: P$ M% k
        this->j=one.j;
8 m, r! i2 [4 A7 f9 ]7 t}
3 j' T8 k3 C8 \: |9 C8 |: X
+ Y2 ]9 {1 w! n8 c& _9 tCA::CA(int m,int n)
: W9 N) q& K& [{' e/ A4 C$ b, e" p6 i5 E& Q% ~$ w- i( O
        i=m;% F7 [$ f8 v4 A. d7 K, R
        j=n;0 F5 [6 [5 h6 L! J& X# t/ N; e6 b
}( c# Y- g0 b$ ]1 e6 v! X
! x  C) i& T1 }' B
void CA::print()
# f  q1 w5 y( T) K) [$ n{
4 ^; Y) f, E# }2 C  g3 h# S        cout<<i<<endl<<j<<endl;# F+ C8 C3 r( ?$ S2 x% Y0 Q
}
/ J# _4 L' m4 t5 h' g+ [, Y$ v( Q7 F; ~5 f( o7 V' e
CA::~CA()
8 ?/ f/ U2 W' T0 p9 g{
" R! H. ]# ~2 `+ l' W, S9 T}& b- n; D& p3 y& L% C. r8 I) U

9 @) H% J2 ?) e. e/ r" T5 I2 T#include <iostream>
. \, F' T% S" K7 Y3 ousing namespace std;3 R, M6 I( M% X+ P4 ~( A1 X$ B' L/ ?, g
#include "复制构造函数工作原理.h"0 H! f( f; B( c' V* |) Q
int main(void){        3 ~' ?' ^: m  V: l
CA a(2,3);        # m* U. B# f! r1 B& p7 E
a.print();      
* D* m7 F( R$ G4 S2 I CA b(a);        
4 F8 M8 ^9 |3 P5 Ib.print();
/ m: K1 J* d# V4 p      
. _$ w' k: j& D" Z1 M return 0;
) H0 Z* ~7 G6 X9 J2 X4 \9 c# N}1 J2 H9 L4 G$ m0 j3 p

8 I" a, \$ k9 _. ?
" w: `# W# Q' I
* v# ^- A6 n% _7 J' [" B! N0 y. h  s: w0 U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:1 L3 I- ~$ O/ x) P- |: l$ ~; Z
1> 初始赋值时:CA b = a;! s, y9 m# g- Q; J1 C, _/ m5 h
2> 按值传参时:void myfun(CA ca);
; `" m; o$ Y7 v% _* }( A3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
( S+ s/ l8 K; `% H* }' |. Z9 s复制构造函数在以下几种情况下调用:
: n' ~7 z3 O6 e6 ?1> 初始赋值时:CA b = a;/ ~  r' b" |1 X7 p/ \3 I0 f4 q
2> 按值传参时:void myfun(CA ca);
3 C/ i& @0 `1 @6 R# H' }; U/ h7 N
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-1 17:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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