鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
% @8 P" T- [' S3 H) l* d  O! i5 F
class CA
0 A( i5 P& E1 _' j{6 N* O5 L" o6 b7 r0 P
public:, _; \' k; O) X% R4 h
        CA();& ~2 Z  I, h3 j2 {( ^
        CA(CA&);  H8 G) Q# J! L
        CA(int ,int );
% t- }8 e2 p* I" A( d9 Y+ c        ~CA();- ^: Y9 m0 d  o6 w5 y! }/ s
        void print();
  n3 {6 l* h$ Y4 x1 {( P- w- p" t
0 @; y& r% O0 Tprivate:8 [- Q! {1 S# R4 ^2 w
        int i;$ W% C. p; D& o" ^  A
        int j;+ G$ y# j7 W, q: c$ h" T0 J
};
5 S1 f4 F; [/ l9 Q  r. B9 `
+ L( V1 O$ @9 N3 jCA::CA()
$ b# `6 t. q4 @4 @9 b; [{
& M# Y- b, ]8 k  g7 ~}% d7 z# X8 T" e* y5 e' a% \# g/ o

1 U7 o# P) O4 g! v: n, iCA::CA(CA&one)
3 g7 W" m! _, v$ P4 {{
" k1 [$ i) ?: y5 O" P2 ]4 g        cout<<"调用复制构造函数"<<endl;
+ ?, K% x1 |) K- u: @  s& `        this->i=one.i;
2 L/ Q& W. W3 x; D* z, ~2 P+ }( B) r        this->j=one.j;+ a& }& n; \! |" s8 n
}6 O* C5 j8 V$ ]+ k7 |1 E
" y! Q% o& m3 r! e
CA::CA(int m,int n)! z/ R9 E: L5 u2 s# w8 i; t7 V; S
{
" q0 U* D7 m) U/ {9 j- c3 _4 G        i=m;
, ~* Z9 f5 F( B8 `6 o4 z2 q        j=n;
3 x% [$ o5 X) Y}% v& o0 T/ w/ c" L5 o3 j( y

/ z2 k! N# j6 H. p3 s% Fvoid CA::print()& y- m" Q6 O' o3 l
{
+ X# S0 i; u3 V+ J        cout<<i<<endl<<j<<endl;0 R: I  o2 t" V8 _1 r' R2 V+ v- K. c
}. g1 u  |* L9 f7 a8 Y( h
, y. N  _/ J0 `8 L
CA::~CA()4 T) M6 R) h0 E! c$ h
{
3 R  x. B) M* d* y/ n}
: |3 Z3 Z% h( d& i/ C$ U+ _" ?9 z0 R  o6 d( w, [0 Y, o$ o
#include <iostream>
$ Y" _$ O& E7 A% R2 Gusing namespace std;  E4 P6 i& M, [: H! a& Z* G: l4 x
#include "复制构造函数工作原理.h"6 P- {1 j' D/ F& t" g2 Z# O
int main(void){        ! [, V- T( Y: s! r4 Z0 e1 f
CA a(2,3);        ; i9 E) x* e% h! f1 d
a.print();      
% m3 y* a. [! E4 {, x6 W CA b(a);        1 D2 f3 [! C( t) ~& b
b.print();+ j' u' D8 Q6 O5 Y8 s
      
3 x- `/ d& g+ b3 O2 y return 0;
' N4 Z" c+ k* b: y+ a. \}) ~6 u- u1 K4 M% Q4 F- W4 G) s

. ?4 A' d# {: N2 N( N3 E6 l$ B2 l* m- ~$ f

6 ^* j- a; t$ K8 Y) M% D5 G6 s! Q; _, s! a) S3 }' a  N- w% F
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 {! p9 O0 w/ h3 e! o& y1> 初始赋值时:CA b = a;
; u; k! n' {. I, Q9 p' ]: C2> 按值传参时:void myfun(CA ca);! ]7 U$ L/ ]1 O5 }8 A3 N6 k% K
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 , Q5 J/ h! M; @8 N. R& d
复制构造函数在以下几种情况下调用:3 ~9 g  C  q' i* V3 [% R0 n7 R3 N
1> 初始赋值时:CA b = a;
% f6 E% x9 w- I# C0 E2> 按值传参时:void myfun(CA ca);

7 F/ c' G4 ^9 m7 A% `* w! v6 S第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-6 05:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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