鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( I+ v+ r2 M  ~; P
! a1 M$ Q' o6 I9 p2 p6 jclass CA0 _$ W/ `7 J3 G2 C! N* a
{9 N6 \. g) ?6 B/ G4 s9 [. U
public:+ M( P- o* z+ P1 h* ^5 C' o0 d6 E( ?
        CA();" B  |6 M' E# ]2 j+ j. j& Q9 s
        CA(CA&);
+ j& j. m) W* |& L/ _        CA(int ,int );1 j  r5 [) O% ]3 t$ ~6 e4 ]/ @' ~
        ~CA();2 i  k2 d" n# t! G' T# w5 x1 n
        void print();6 w; c9 f! Z) y6 @) ?
4 [/ a4 y: D5 A0 J# O0 Y
private:
/ X: \; M* k6 p6 k        int i;( o% E: j7 Y3 b$ w
        int j;: J1 O2 ^, a6 _" p0 `4 _' ?
};
$ T7 Y( w- j& |8 P; u: t+ l: d; H7 @# w4 w$ g1 _/ N* O( Y5 p: C7 ?
CA::CA()' a# T; o, ?4 o! U& |8 t
{
6 j- W) i) C: K' o5 |}  M( v8 o, h7 \7 n8 V
) Z9 ~1 }+ [" o
CA::CA(CA&one)" G. K, N1 o: {5 n/ [; t5 q
{
0 {+ \# o( ^$ m3 s# M- v        cout<<"调用复制构造函数"<<endl;
5 N2 q) ^' s, x/ J9 @* L3 ^$ k        this->i=one.i;9 b/ T' _$ p* S' M2 D- E
        this->j=one.j;
; ^" v: |- f! P; e' y}
: d) F5 o. z# k9 \; q) d
* B" \/ \7 ?+ qCA::CA(int m,int n)' e6 W. @* q$ B: [, n$ H- V1 D7 X
{; g  p+ ~: k, _* ^) b3 }
        i=m;, N, x' ~$ M2 Q/ B4 c
        j=n;
2 l* e/ l! H% Y9 {* d}
0 Q8 v* t$ i1 O! e# F1 @& H" `  X- g2 P" s4 [
void CA::print()
" K  e3 @# p0 K) w1 Y* r  y{; g. n& l$ q0 w% q
        cout<<i<<endl<<j<<endl;
; u7 a+ M% b8 K* o" {}! v9 I% f- F8 V' _3 F
+ `- v' A7 R* m, s4 M9 t
CA::~CA()
  _' B* c1 b; `( l9 x3 t* v{
! Z2 b- ?$ G0 `* e5 F}# n6 l6 ^8 Q7 ~, F  ~# e
8 g4 G3 ^2 M( c0 w4 l* F  \
#include <iostream>9 \, o8 w; O" D, \; g0 E0 F
using namespace std;0 \  g& U& z* J9 |* b
#include "复制构造函数工作原理.h"3 l1 {. M' Z; r& ]3 Y. A
int main(void){        # E7 p5 o& ~! D+ n, y
CA a(2,3);        " r7 ]& }7 m5 n
a.print();       4 C9 ~1 d. Z4 K, S3 S9 e1 E7 `" t5 ]& E
CA b(a);        
8 L4 ?6 F: o1 O- t- vb.print();
/ ?/ u  N0 M  O! T5 b      
' l$ c" j" B9 i( i" v return 0;0 p5 T5 t% B% W2 s# W" d1 i" P& M  F
}# n7 s  Y6 l3 |; Q( j1 t

+ C$ @1 w) b% f8 Z# E; P4 m5 \1 i( O: v
9 \$ \1 n! g( I8 }3 {" s4 O
- T+ w3 V# \4 A
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
/ t4 Z1 F/ @6 M! T# v1> 初始赋值时:CA b = a;
- c4 O& w6 t: z) z( B4 v2> 按值传参时:void myfun(CA ca);
& [/ R# g: @. h0 V3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
6 [. K8 @1 L' F3 P* H复制构造函数在以下几种情况下调用:1 b1 y1 Q% @. @4 S3 q1 Y3 @1 k
1> 初始赋值时:CA b = a;
3 f6 k" h. a$ v% `3 W, P4 R3 O2> 按值传参时:void myfun(CA ca);

: C8 T+ ^8 y# @- t1 w* B2 t+ V) g第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-31 06:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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