鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 2 W+ U% [* D2 E8 T% j

( T, R6 N! u  z  G! E( S& fclass CA" ^, z+ q/ I" X) k
{
- W! [) p& v# v! L. d- bpublic:- V( X- [7 S, c
        CA();
6 {2 ~% j3 O4 A! |+ b4 ^2 G        CA(CA&);* L/ q: r. H, K+ u
        CA(int ,int );6 e% [, d: D0 {% a
        ~CA();
4 G2 x" J4 }$ d& Z; q        void print();3 h0 U2 H& s8 @% C, b& J

4 z; Q/ q( P6 N3 Bprivate:
  e  Z8 e9 Q$ o# @5 B' }2 M        int i;3 r6 L8 H8 P9 o; E3 i# D3 \1 i* ?
        int j;
7 E- s) ~& P  v: M};) [3 _2 F% U  B, W2 o

; y! j7 ?$ @, ^2 A( oCA::CA()
9 t" o, z8 f0 U3 c% i# E{
5 h1 A- v6 G0 k2 Q}
* C6 T: z+ w5 f/ `! ^# x1 A9 h8 v7 N- _% v3 F! ]7 M
CA::CA(CA&one)
2 H' o/ D4 ?3 w6 n; |{; |3 b  X8 E! |5 ?
        cout<<"调用复制构造函数"<<endl;
& a' ^! O; k: a9 z: U        this->i=one.i;
8 U; j! M: E& e5 j3 U" C" k. z        this->j=one.j;1 P% V( T* }/ h* ]( ?/ \
}
$ g! }$ F" O. Y
6 ^- f6 ~) ?/ t* MCA::CA(int m,int n)
8 M& ^, D( X8 u% D! [{) m9 k6 w6 T% z$ b0 S
        i=m;0 b) `5 z, d9 {5 X: v
        j=n;
+ A1 v" I  `+ e7 y* n}7 A, ]) r* C3 L/ Y% b% a
/ W; o$ k6 a4 U  h
void CA::print()
. Q; y) W) D4 y( B! F8 w{* {% s4 n& Z3 X8 e8 s
        cout<<i<<endl<<j<<endl;5 v2 x1 y& v$ N& E
}
; g7 `' f7 H1 E- @# N2 ?6 Z
. j1 C! t0 c7 D. G* Z3 `! ECA::~CA()" t* Y  h* r* J
{
. q* n# b9 q: z' y9 i6 ]}
. x+ H: F4 v. m) C! o# {! A) Z* B* \; O- P/ @
#include <iostream>5 J; n) Z7 n" Q! g( u# p. I
using namespace std;
: ?/ q1 D4 B' c' O& F) u' m/ f#include "复制构造函数工作原理.h"
: b  y# Z7 `+ Jint main(void){        
+ J" u) V% y' XCA a(2,3);        
9 N+ [" S: ~% a* L. ta.print();       + _9 [  T# s* d+ P4 u  g* m
CA b(a);        9 S) `2 S9 p8 Y; Z8 T, c: H
b.print();. y3 Z) j; Y7 R% q
       ( K) k" T9 n( x& M) C
return 0;8 L" @+ V+ |. v; k9 z3 F5 H/ y9 k* A
}
' W# O# X( K; E6 V
* a' s4 ~. ?+ S% y8 ^/ i, E% a8 A: n; A  c$ e) _% a" H* y& B( x% {( f/ f

( g8 e) K6 J+ R- L, ^+ H4 @% K* z+ S% |* Y' v1 j4 b
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
  q' \$ |* J  c3 w- A* g9 J% Q1> 初始赋值时:CA b = a;
2 j/ X# {9 M% b( {( _( k2> 按值传参时:void myfun(CA ca);) s: C$ `* [2 s% \0 _! d
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 $ K6 G/ Y, E0 t6 e* m4 t
复制构造函数在以下几种情况下调用:
6 \. a0 n# \. D5 n- m2 b1> 初始赋值时:CA b = a;
2 W+ _# F; K8 f$ H& M' V9 s" W2> 按值传参时:void myfun(CA ca);
+ ?) J  B" T9 \- I1 b  p
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-25 18:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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