鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
4 b- ~; q! [% a5 f2 `( G8 O# J. f7 Y4 F1 c6 P- ~* G5 M" _+ H" _
class CA
4 D9 h( B; L+ v" g' g* v{
6 W3 b  ]. t& o, n$ Lpublic:
$ u+ x) `2 j, Y( a. Q0 C( d        CA();
3 F& L+ l6 z( `        CA(CA&);
6 k& l+ z% E) k        CA(int ,int );0 U1 g# V( U' z9 U
        ~CA();
, r5 T2 l3 p! C2 ~        void print();) R6 E# }/ ?* O
1 d& P: C) b" d
private:
  Z* a4 g2 P) y) G4 P2 U7 {        int i;
5 g/ i" t7 E1 a7 r. ~  [) Y& P' l6 q+ R        int j;
6 d! G& {+ m- M9 E! ~};
; M( p0 s4 ?9 a; {
2 [. d8 s# z' G$ f8 y9 OCA::CA()
+ M! q2 ]/ }' g$ P- h; E{+ s5 @. p! Z) p2 ]9 L- {
}$ q5 C$ k' K: V7 {% C% o6 j
  t) ?9 N9 Y4 d' c; Y
CA::CA(CA&one)
3 [. n3 G5 V1 b$ d2 ]+ F9 q{6 F: C" T  O: B" R
        cout<<"调用复制构造函数"<<endl;
, c$ g$ a) `5 n" H( A) r0 e1 V        this->i=one.i;
6 }3 C$ V+ r% i9 c" ]# R        this->j=one.j;7 g0 T1 c$ e$ g% r/ S0 m
}
" L- l! i9 k1 A' B, J9 {" R& t- s
CA::CA(int m,int n)
" g5 J& i' G4 ], u& o5 P  }' h1 P7 \7 O{0 O4 g0 x$ t  d7 _. a
        i=m;
4 i! C2 @; ]) a" `+ Y        j=n;
" T, D* @& J' S* x8 a}
0 ^0 N" J3 L( u' O' R" l) f0 Z; ~( w' F' p0 ?# L6 ^
void CA::print()
  K# _% k1 W& Z" `; [& `{
: h' V5 t) U7 h; {        cout<<i<<endl<<j<<endl;' d. f8 w# b; [
}% l4 [; V( F# R: z8 r

# |; m# r  R4 S+ I' @( ?CA::~CA()
! z  g, Y8 Y1 J* I4 \7 K{  l  Y" U+ ~( v& w
}  A' q) ]) O4 v8 B) Z2 r
1 o7 M' t% o% e) g" u  k+ I. f, a
#include <iostream>
- y/ i' V! b6 ^( U, D( n& p* Yusing namespace std;- S" J' g* j7 p5 L5 @
#include "复制构造函数工作原理.h"
7 k1 }9 f' b" ?- [. {( Iint main(void){        
, w) h  a! `( ICA a(2,3);        . \8 O5 r4 K+ ^( I
a.print();       8 U5 b5 T. c* M; u: m7 r
CA b(a);        2 ^$ ?& K# f3 u: E5 {: T7 |+ g  H
b.print();5 ?9 m# V0 O- f% X" y7 G
       ' F, k" l' p2 A  c* u
return 0;
7 d6 ^. M+ g$ E4 w- {# q6 B}
5 c# U4 f5 ]9 Y( i% o
5 E( ]& {3 j8 {0 y$ r; w4 Q! z" K7 w# ?% X2 V6 u- ]

7 ^/ V) d) S6 p. W
4 @6 U3 e) S; l' i9 S0 M
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:. ?$ Z. p" z) n2 Z$ i- s+ a
1> 初始赋值时:CA b = a;: W  r# V  f; U) w% f0 f  q
2> 按值传参时:void myfun(CA ca);
! \1 x8 m% o) Y* C6 C) ~) s3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
+ x/ U+ G1 g$ z' e
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-27 22:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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