鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 + V+ [2 Z" p' ^" K' s% q

$ t6 g5 j% I- ]1 mclass CA" ?* X* m) h% I' b; p
{$ c& V) k, [+ ^4 P0 ^
public:; G! z/ U4 K; u& ]2 S" {0 ~
        CA();
0 u; q: ~' ~/ g4 d        CA(CA&);. L& O7 r. r- D* A0 T% [8 l
        CA(int ,int );
1 Z/ N% X8 l! R; x7 @/ r/ I" n        ~CA();% m* Y2 B0 I: w5 s; I
        void print();8 |: L0 o4 f! v5 }  ~
9 @9 l$ _) |- Q. R: i9 A( f5 I
private:' F* ~! W6 k2 c- T0 ?
        int i;. L5 b( ?+ G0 ~% F$ d% S6 y% n
        int j;1 w5 C7 r2 p! |0 v& }' N5 Z
};
$ n4 f" B% T6 h  G, z+ [  x  c& \1 Z% v' e$ H- X. B* Z1 R
CA::CA()
1 l/ ?, f; Q; W$ s, ]9 X{
: I. e0 Y, C1 D: U7 s' W# o7 n}$ K; L; h0 S$ U1 \, t! }/ g
' ?" h0 `8 P& R* ?. B
CA::CA(CA&one)
9 I, w$ y! G5 X( b{
  Z- [5 X' X. B- k3 f$ k        cout<<"调用复制构造函数"<<endl;, b' v% G2 C% B: y9 J
        this->i=one.i;; h6 j- l7 F, u- M+ B. s) H6 y
        this->j=one.j;
5 e" F' v/ k7 u}
! k" F' U# T$ w" h/ t
& l2 ?1 f8 l9 C) o0 s& c& aCA::CA(int m,int n)/ ~6 s  |9 O( Q& V- g. y. D
{: r: _7 F3 h5 M! E& c3 E2 C/ ^
        i=m;' z* L) L- Q! R( y% p0 v
        j=n;
1 J7 d$ p* x% C+ {1 d- U}/ o9 Z, D) H8 _- T) C& n8 x' s
% @: p. {) ^6 m4 r" o; O; A6 ?7 b
void CA::print()& M- J; ~; a' n/ M( x
{
. r$ E: ^; v/ o, S        cout<<i<<endl<<j<<endl;/ Z4 |+ V* I/ @* ~) `& E/ S
}  Q+ ?+ Y- A# M+ \
0 `3 ^: O/ I) q0 ]% n  G2 z+ Y7 I
CA::~CA()2 a6 n. z1 b7 F! `
{
  ?: @! H2 K$ u  R  }}2 o+ n0 W( Q: q' N( F# |% z
: b# \: d0 H$ u2 c
#include <iostream>
5 s# S3 H# C& E$ husing namespace std;  C% {. G* N5 \9 E2 n" ]
#include "复制构造函数工作原理.h"8 _" {( E+ M! o9 x, M, z
int main(void){        
/ J/ c0 [  B; S# Y, L' T5 i# mCA a(2,3);        ) R: |# B% s  t& _6 S& C
a.print();       $ W; Y7 C2 Y) G- u
CA b(a);        % h- Y( ?! y* p5 p! {* |
b.print();' H- T( H( }6 |% Z- r' u4 @
      
, p7 g/ ]- ^+ E7 n: [2 M) } return 0;  p! H2 U4 x; c) |* X# j( g
}
% ?7 K7 C! k! x# x$ `- X+ A" ]# f1 s% {5 \% [

  J. ~- W' j. v6 b) W6 V! E
4 C3 u$ w5 @/ n8 U  B  a8 t' d
0 a; L3 w% r* v
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:% p1 {- u$ b1 o; Z* ~* h+ G
1> 初始赋值时:CA b = a;7 @4 n7 a2 z9 Q) M# u
2> 按值传参时:void myfun(CA ca);
: n: G; b+ n* F. Y& ^3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
4 f" b/ R8 n! r- z5 K) r
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-30 15:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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