鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 6 l: a' p! s$ H+ X# t$ {( `. [
6 F* v4 M  ]6 b5 T3 Y3 Q: B) F0 N
class CA
/ c5 S( e3 a( D% V; e& a$ e{
0 G6 Z; C* i( b  `0 ], ]public:
) c  S; M$ I1 C! x6 d        CA();* W. N4 D9 J$ }; Y# t# R
        CA(CA&);
5 z- T" S$ a4 C- r3 S0 M        CA(int ,int );% I6 ^9 O: b$ y) `6 X4 `, x0 f# b( {
        ~CA();+ [/ s! ^% y" A8 r6 t- O4 T  ]) ?- p
        void print();% p, q5 D, i5 U4 @
  p! O. C6 N# ]  F
private:3 J5 ~- [* {5 K4 p8 P9 Z
        int i;1 j+ T7 u: x% v3 N) F3 h/ `7 X% B$ p0 a
        int j;
  n3 V6 `9 q" r- q# Q};  _' _5 H* B5 x6 p3 Y6 d8 y6 ]  e

* h6 l  Q3 L) ACA::CA()
) ?. A( N# j0 i( {! o( ?{( T7 \% @( o7 }. r2 W* Q
}! d$ y* C3 a# Z

6 H9 h3 S2 N) J" B) u2 bCA::CA(CA&one), V4 o- i; F# C4 R3 I7 d
{
1 @1 G4 ]" R, Y- c  X        cout<<"调用复制构造函数"<<endl;
$ M+ b4 {2 J/ v$ r# M! z7 x        this->i=one.i;8 X. ]7 d  ~9 L4 I6 P, k
        this->j=one.j;: K: W# z4 A5 }
}2 M) O& U6 d& s' L1 @+ P1 ]
4 n% p' a5 g' n) Y
CA::CA(int m,int n)- s# {7 b' z* P0 `" [) U: g
{
  b! h5 u/ G) S& z4 [        i=m;
$ d2 l. e) T# g$ U: O        j=n;8 S0 a3 Q2 j5 r! A) `
}
& z6 u, \( M. f5 D, v* n0 B2 w$ g: m0 M1 [) K6 [# u& o
void CA::print()$ [0 V5 \: F  E
{- X0 W4 @- n  ?& A& r  Z: [+ c0 ]# ?3 \
        cout<<i<<endl<<j<<endl;; p" f, j/ F6 \5 S. X7 \5 [
}
6 K, w# J1 t, i0 C, e2 X7 Z; c: s2 g% y# e
CA::~CA()4 J0 H- G6 e, S. w7 G8 b
{
5 x; J) c% n, n2 S5 t6 |/ E}
# f: m8 @; w6 q9 q5 Q, M0 K4 H( `+ ?4 |. O' K2 o5 f
#include <iostream>+ n) C) y; |7 ?4 p. _: S
using namespace std;  u- B; u1 |' ]# c3 n2 v
#include "复制构造函数工作原理.h": s+ G0 `, r& K, i
int main(void){        5 D; d5 a/ x0 x+ u0 [& L& K
CA a(2,3);        
- \4 f. `1 o! v, w6 Va.print();      
" a; e3 S+ v. K. h* Q' ` CA b(a);        ( j2 e5 G& O7 x; u
b.print();
5 h5 @8 J4 o6 ?! j! J       . J. ], Z. A( a+ y
return 0;7 g2 p' b$ C1 l& {) \: ^* _# F
}
2 w4 C; `; D0 N, r
" o, q2 J* r" E+ ?7 O* M, F% n# y# o9 ?( S9 k
1 ?5 {7 A1 b5 `0 W

/ b* s, v1 F; W# _1 H
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:' t0 H+ G6 ?% e! P, |
1> 初始赋值时:CA b = a;2 ]# a1 ^6 i; O- `- V6 y; _
2> 按值传参时:void myfun(CA ca);' s4 Y" ]7 ^3 D# Q$ m, D
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
7 _5 v- k8 }2 r2 S复制构造函数在以下几种情况下调用:
! I9 o7 Q$ Z' V+ N9 O$ K; s  z1> 初始赋值时:CA b = a;9 v# S9 i; A' f6 g: |
2> 按值传参时:void myfun(CA ca);
) g7 Y. L$ I# b' W3 t% k
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-13 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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