鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 % V' J0 K2 R! _7 [/ t+ L9 K

1 Z& Y/ G$ V6 P+ [; ^class CA# d, `! g8 o# w# ?8 o
{
- Q4 O) X6 v8 L% ]public:6 z& D/ M1 [# l$ `9 u3 E8 w# r
        CA();
9 \: a0 _( K9 d8 X! {+ m        CA(CA&);
9 [; O, H- D) u0 S        CA(int ,int );& b. b8 {2 _# P: S  k
        ~CA();
/ A  ~5 s3 o8 a- }' N: `9 n8 D6 [6 {        void print();
* Y- w9 J+ ~8 M9 \! s7 r: E& q# I
private:
, u0 a. U7 A' O9 K: O- x        int i;
& F; x1 F6 |6 V( u% R        int j;
( y1 d  e: X  S};
" _# R" R& k" Y5 S' H* G* E9 q) |0 j) x
CA::CA()
/ J" I5 _. |7 J. a6 b, b{/ {9 P* L, f+ v1 K% O: o, C
}6 K/ m5 D9 ?4 |3 t. k8 }
- a4 n7 ]0 b0 _6 J- J
CA::CA(CA&one)
  F* T/ j3 |; h6 a2 J{
& c5 t8 A! ^3 \# M! e, T: x        cout<<"调用复制构造函数"<<endl;
: C' m4 ~: b2 o: J# e$ T        this->i=one.i;" c3 u- u8 g% H7 Z7 i( Z
        this->j=one.j;
6 y8 K% J2 u. t; N6 y}8 R# n7 V4 s+ I  O

2 r! l% s$ A  W9 r7 l; x' k) ]  NCA::CA(int m,int n)
# i* B6 X  g. _( x) Y) S1 {: }{0 f7 S9 }, s4 F4 F- \; E7 k4 w1 h
        i=m;; w! q3 d0 Z4 C- e1 U3 [
        j=n;: G, F2 Y3 j) u! P. n% d0 M+ f
}- o/ u5 c1 ~% p! R
  C# y9 U3 w; Y/ T% h9 O7 n0 B
void CA::print()' I" X. q4 g2 R- I6 W# U2 a
{
2 j$ t! P4 V1 u& E% J! Q+ Z1 W        cout<<i<<endl<<j<<endl;
! d, C8 n# {7 v}" y, P; A& g! ^; g* {$ Z8 R: ~( i/ k

$ o( C1 h: x% UCA::~CA()
$ O5 N. B2 N! H* F% k9 s{; U( w" f  Z  a' x7 F
}
% U, \7 Z& M* `; [4 d9 _5 D2 j+ g- J8 u5 q% `
#include <iostream>/ k( p9 n$ {# \+ }, R1 B4 j" s
using namespace std;
. G! e  u0 v: c$ M& S#include "复制构造函数工作原理.h"
  C  m/ I6 S" ~" mint main(void){        / g9 i7 G# s: M# |* R5 A/ U
CA a(2,3);        / b9 x2 i+ n0 l- o' p0 E) P
a.print();      
0 s, c+ j( ^$ K+ s& V  A0 C7 u CA b(a);        
( W  G2 t/ F( }4 cb.print();  E: S8 d, _7 ]* c3 P$ w& C
      
7 a& Q& ]" Y; v& f) W5 t return 0;, z7 s  W8 ^8 V0 m4 P) ^
}
; y* N' H0 {; q. I; E- W# w& t) Z3 N. d; C
; m7 I; C* S; i' S, j- F+ t3 j
' e/ D# I, V' |" |* y

" v6 R& Q8 s# f4 B& M% w
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
9 z* V. `- Y% [2 p( m1> 初始赋值时:CA b = a;# x* u' ~4 C- E5 w+ {9 q
2> 按值传参时:void myfun(CA ca);2 o7 d" I  L% M- {" ~
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

! F* J2 Z8 h0 i5 r  i第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-2 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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