鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 4 h$ O0 ?7 R$ n; b! a

+ Z6 Z, C4 ?$ Oclass CA
; h6 Q5 J! B; K, a- D{
6 w, \2 U6 ^. U3 {, F4 \/ B5 upublic:2 U7 Z% R0 I1 {8 G, u% J: B% @
        CA();
- V1 _% ^5 V( m- i7 b; C9 s        CA(CA&);
" g  w7 C) z8 b9 u4 {) U        CA(int ,int );* R% B" Q( [9 h/ u# j# q. i
        ~CA();3 c5 V  r) X& q2 |& P% |5 D
        void print();
- l* G9 W: u2 N5 T5 l6 I  [/ y
0 c! h# R2 b! {8 Y' O) @& bprivate:
4 _  S! a: b; ?' I7 s! m0 c        int i;2 K% P2 |9 B, n, m
        int j;
1 T+ b1 p& O+ D5 x9 p* n};
/ Q4 q- N' L8 \! X$ x' }* }5 a) A1 I( y3 a. g
CA::CA(). `3 o3 v! G6 S# Q
{/ x/ s, n# U: S8 Y' R# p
}
  C' Y& ?7 ~) m4 r/ L( E1 ^2 I/ P" y% k7 t
CA::CA(CA&one)
2 u) a6 J6 ^' {5 \{/ A8 @" \, k; ?
        cout<<"调用复制构造函数"<<endl;
3 P& a$ c. a/ Q/ g. ~        this->i=one.i;
+ O5 H; D& x& v/ n        this->j=one.j;
5 N# V6 m" Z* d$ M7 ~$ x9 L. v* r}
+ |: {& v8 ?! Q, V5 l4 D% r+ z. Z
# `3 A) \; _8 Z$ pCA::CA(int m,int n)
4 u, E+ t# s4 [9 L, q{
* @) p5 t9 x0 Z        i=m;
/ A5 O: W6 c, x8 y* C        j=n;6 `* R* \1 @0 D9 J: \1 N5 ^4 O
}
( O  _2 r  d3 R. @  n& r9 y( O
1 n7 G# s) m6 a; Kvoid CA::print(). w& |- S  `: F; V
{
  A/ Q. u1 L% B3 Z9 B- I9 `2 {        cout<<i<<endl<<j<<endl;9 d' \4 Y# m; \
}
( O- d" m8 _% f, H
2 r. P/ f& ^* Q2 N, u  }- t" e8 jCA::~CA()4 V6 b. U- k3 u+ X& I1 B- \
{
, r. S1 J( l. H5 q" h6 h# T}
* a4 X! a$ I3 J$ e/ P
8 \4 S9 R, ^' b5 O#include <iostream>$ g0 M9 w, I3 d5 O& l
using namespace std;8 l4 f3 G  i' Y) u$ s% {+ N
#include "复制构造函数工作原理.h"' D+ _7 K5 w' T' |  J
int main(void){        
3 g- ~* x+ @6 Y6 d9 V' hCA a(2,3);        # m7 x# g* e5 q4 u+ ^+ ~  T* Q- T
a.print();       % Q- f& j% [3 @) z
CA b(a);        
, `: A3 a+ y# X0 fb.print();
9 l6 ^" ?- a7 V, W; L* @- V* w      
8 F2 ]) J2 r% L2 V& S return 0;+ u" Q8 j. r0 ~" P" F, `
}
- \1 j: p3 p7 K" ?& c
/ j3 v0 m7 o6 c1 F" C1 _! U
# |. j1 f. k/ j1 r, n1 M3 @% D2 E; h; ^2 ^0 h

" Q$ @: H5 [( J& a& A% `7 D
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! y* w9 o/ V8 T$ _& B) K1 h1> 初始赋值时:CA b = a;1 C/ Q/ U( C+ I- P8 y  F2 V
2> 按值传参时:void myfun(CA ca);* u$ K6 e% l& T: h% G7 ~# r+ d
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
4 m/ w" V8 v: S$ D, A  h  H
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-26 13:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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