鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
" F# k5 D: _4 z. o$ |1 u6 h
/ I( v6 Q8 K$ D2 W+ x/ o; m9 tclass CA6 @7 N# B/ Q% Q$ ]: c' n7 t' H+ j
{9 W! n! P! \  u, ^) c
public:2 S: B2 J) C# Q* S& b0 D
        CA();$ W9 T  Q' z4 u/ P
        CA(CA&);0 q0 P6 |$ |; i0 P  a
        CA(int ,int );( ~: U8 {$ w0 q8 a, t! {8 y
        ~CA();* m! Z4 i7 j! l
        void print();
; g  \: i; v- F4 G" _
+ D+ n  M. A1 H1 b, Bprivate:
- g0 B. B( y* r- T' ]# `6 E9 y9 S* r        int i;" H4 g# e) w" j0 I. C
        int j;6 G- a( r7 X1 T4 h) o
};
/ _5 q! p' i7 s
' o' n- T2 X+ W4 ?CA::CA()% P: _" C4 n/ H
{
% W% ^7 X0 K) \}( {& m5 N% @7 i
  l, V( d9 T1 y3 s4 T. X
CA::CA(CA&one)/ ^& ?0 `0 F& D; v
{
3 u# h% `2 F. P# ^! B; j        cout<<"调用复制构造函数"<<endl;
8 `% y. c9 z6 F- P$ L        this->i=one.i;
7 S9 w, s: C. e% u( W2 Z6 W        this->j=one.j;) S6 _2 n% A5 V- d9 I3 {
}
& x; Z4 `+ }% M! M6 a6 Q7 d" Y3 ]9 v* k5 L
CA::CA(int m,int n)
  [6 v2 J; S% F' o{
2 Q: a+ @$ t/ H( h2 g        i=m;- |2 c/ I3 ~( @
        j=n;& U  E3 {0 W9 P  [6 d
}
9 }: `9 N8 {4 R; B
" R. g! @% R' {. Y( {void CA::print()
' D+ j5 ~: ^+ Q7 S! h- @{# r2 s. Z( ]! ~  r: }& E
        cout<<i<<endl<<j<<endl;, O; u, n8 D- e8 q- c& v+ e4 v
}
1 ]) E+ I8 U! n. r
/ e& ~: n3 D# V& y5 ZCA::~CA()* [1 k% `7 ]# b5 V& M
{9 E  E: _$ X+ H
}4 ^& T- W  I5 I; z
1 J2 [, B% v8 g9 P
#include <iostream>
+ K" i4 k& m; I+ H- \( f* vusing namespace std;
+ B, [% p$ I4 R#include "复制构造函数工作原理.h"
; \, ?  x* p* j! q& `6 J7 yint main(void){        
+ `1 R$ E, V/ y% GCA a(2,3);        . ?$ {& o% m' N, P" N8 c% m
a.print();      
! t2 P- D. Q& g0 M6 h CA b(a);        / H3 g. l# ?% U+ M+ C- D5 S0 [
b.print();! i7 F8 ]$ m3 [! |
      
7 N' p/ i. k) g  [+ }0 s4 F return 0;
. ?& f7 D  a0 z$ T' @}8 N; L) e6 }" E6 j- [

" r% V1 M) }4 b# \9 e# o5 k
5 i! A' E" H" L. ], f) ~* J! S/ s% s. L/ A6 @0 j7 B

1 s5 W' |( {0 l' Q) x+ ^
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
" c" O& {& {* u0 J6 s) M: J" [1> 初始赋值时:CA b = a;
; J3 f' w5 l0 }" p8 y: ?6 P2> 按值传参时:void myfun(CA ca);& R! k' b8 V* v3 T) X. ~
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ( A' X) ~2 c' Z# [; |# c
复制构造函数在以下几种情况下调用:
! K2 Z# D: [) [# F1> 初始赋值时:CA b = a;7 [! o% R$ B" `+ |$ e3 x/ J5 t, q& Q
2> 按值传参时:void myfun(CA ca);
5 E/ F9 o7 h3 b1 ~$ p+ t
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-25 07:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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