鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 2 n' @! n; a( y5 r

8 v* Z9 W5 q4 i7 {* X9 t2 sclass CA
' c2 A4 l* r3 N8 m5 R9 n{
8 F* \) e6 X  ~4 p$ r1 Z6 O3 A' Vpublic:+ D+ t0 K1 @$ ?. g8 u
        CA();
8 J( C2 \( z5 D4 L# t        CA(CA&);
& [9 B- @# s- H, X0 s' s3 |% G$ R        CA(int ,int );. }3 K  ]8 M5 x, Y4 a+ K; T6 i5 j
        ~CA();
$ U# j' c) J' f9 I        void print();# n3 _5 M0 {6 M
2 e1 v3 l) l* Q% ^
private:
# x/ p4 N1 c! A6 u! r+ Y, X, I        int i;+ D4 k% r# V  e! k
        int j;9 T7 b* @. G3 |5 c$ J" k
};* }% o8 E4 |& j9 z

) T3 `; c) O" Q' o  [+ b+ N# @+ jCA::CA(); i# D; M/ |& F9 w3 q4 e$ ^! c
{
& j% i* o  ~$ G7 A% v: c}
$ Z8 @9 O8 {* O
$ X# I2 o% l) Z1 c0 T. rCA::CA(CA&one)
+ B: L' H. o, F6 T; F{6 K- K& A0 M+ K- C: {* `# w8 S
        cout<<"调用复制构造函数"<<endl;
  Z. A4 M! ?% ]8 \' Q  N% t) S8 R        this->i=one.i;
, n* q. L+ h' [! k. \* f$ o  I        this->j=one.j;) T# C* E8 T2 j7 e. b2 @
}$ x& K, g0 U$ X! {& _2 {
* h7 G0 \3 W$ l4 G8 q3 C& |7 {9 V
CA::CA(int m,int n)9 m+ a* m( g9 r7 J  x( Q+ J; y
{
! B4 A2 ^5 g2 V% [! c0 I        i=m;; h0 v) v6 j4 G
        j=n;
* \/ B1 b0 `: k0 r}" i. ?/ A% ]9 s
) j  q5 U1 \+ x- r& `$ E9 c
void CA::print(), Z6 b) K; I$ H8 y0 ]
{7 |8 D  p% \8 Y; j! Z( q+ b
        cout<<i<<endl<<j<<endl;5 Q; M- h! V7 U+ _; M
}9 ~- Y% E  f$ A! z- ^; f' p
; y; J* j% P: a" h& V
CA::~CA()! ^+ f2 i# Z! V: a
{( z9 y+ e" i0 `; x& O+ N* C7 b$ b
}; i+ f/ X  Q, X, A# O9 `

+ A+ Z1 y- w7 r#include <iostream>9 L% S3 [5 A4 Q/ v9 t; O3 r
using namespace std;
- C; t7 h0 S( w  }. H* ?#include "复制构造函数工作原理.h"
8 [) |$ U% v6 D2 Z9 ^int main(void){        + [7 O1 J. ~/ W/ s, a3 S2 n$ c
CA a(2,3);        % F; Y% s7 b7 m3 J' P7 f  t- i
a.print();       * M+ X0 B* B! _  I+ o3 O; u7 Y
CA b(a);        
  z, P% V3 L! ?) L  z0 Vb.print();; F/ U0 \1 }6 t4 z
       * c9 F* Z4 P5 n' C. E! w! l  x
return 0;. h! }6 M/ w( N1 ~  F& m) r! L5 D
}
/ U/ F0 ]" b! \; c0 K9 S! M
' Z8 P2 q% v7 Q# K1 P8 y, q9 K6 {) P' [
* _. `$ p* o! j8 T2 {9 G7 @6 w; ]# [7 H
2 `7 Z, P3 `5 e0 A
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
, h" T; z6 M3 e" ?, B) h' n( a1> 初始赋值时:CA b = a;
+ b, {* O& R; j2> 按值传参时:void myfun(CA ca);
! ~2 k' U- c. R3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 6 T, t: ?/ f) K. d* p, y
复制构造函数在以下几种情况下调用:
1 H( Q- r" d# p4 L6 M7 W1> 初始赋值时:CA b = a;
/ l% G, \) n; f0 q; [7 @2> 按值传参时:void myfun(CA ca);
4 T, s6 m9 {* N7 Z7 w8 @& c8 i
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-3 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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