鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. P+ Q7 U; x5 X3 a
6 u, [: l$ ]7 m4 {! f' W0 Jclass CA
" V3 F1 a; }" _/ N$ g: X{
- z* ]0 C" |- P0 Y4 C) }- y0 Spublic:  j: `$ g9 }. e8 ^% b
        CA();: R4 i% c! {3 y% l/ \
        CA(CA&);
& [2 m5 i: V$ i: `5 f        CA(int ,int );% ^3 m9 z, T; |5 X/ Q+ n
        ~CA();( u, B4 y* E( a
        void print();
4 u: H! O" v* T# o# R- T* F, }8 n* E* u" W. ?/ y8 Y# a0 m
private:/ k8 q4 O* e( X/ E7 r
        int i;
8 q- ]6 W  T) S7 E5 E1 U+ N1 q        int j;) N; R* Q& D& }- D7 p# y8 Z4 X0 ?0 z
};
+ K7 e. X* q: m' }" p+ a
9 |# w3 I4 }6 j- l6 Z: {CA::CA()
, v" j* }. u/ {5 R6 d9 Y: k{
5 P- ^) q3 ^' h. I}
( O4 e3 h8 U5 ~# N' Y" e% Q: O+ k" Y) i4 g; N
CA::CA(CA&one)' Z5 l6 Q: t6 k' A3 u, B; h
{
1 F! C( i9 b' o7 B        cout<<"调用复制构造函数"<<endl;; t+ l1 Z7 U! m+ @5 S1 Q6 g
        this->i=one.i;
6 t2 s7 f7 m( a( b        this->j=one.j;6 u# H3 n9 N! ]" k0 V, k  p
}; E9 C& q$ o! `8 ]+ |
/ `3 U* U$ n6 O* X7 U5 d  K) v1 J
CA::CA(int m,int n)
: |3 z: M  ?+ T4 k) s{8 X: f" V6 w& X8 H7 L) w
        i=m;
: [7 X8 o" h2 i+ G5 f" X        j=n;
  e1 _8 z; ^$ p  P}
5 f- t. i9 Q) o& ~
1 ?9 l1 k: _( q' \void CA::print()7 g/ r. l; D1 {# u- k
{/ r/ E4 e/ g/ P9 Y- d2 E( H+ V
        cout<<i<<endl<<j<<endl;
& y0 Y0 {- d3 x+ R! @}
1 f; K$ y7 C7 u0 B! V2 U9 ^* J- S+ H7 @; a
CA::~CA(); b, x1 Z# _- ]3 L$ E. f% A
{/ J; f* E" R% A' {) }
}
  X+ ~6 O2 j3 s$ W) s; V. k( F0 z: Y$ e
#include <iostream>
* P; f  p2 n8 g* J# husing namespace std;
$ L3 O* S* q; w" w#include "复制构造函数工作原理.h"4 }# D( o  Z$ p+ v
int main(void){        / ^: E+ V) v. }8 x$ \$ w; n
CA a(2,3);        
0 _2 N! \( q# k# X. O9 _. Pa.print();       " {& W. x  }) L5 A. k; C
CA b(a);        
+ Z" y# m) @7 y9 w! F# Ub.print();2 ?# ]. o- R3 W! R
      
2 ?& U5 X; r$ e' Y6 f- K+ I: ` return 0;& G; _) c! I9 l7 }3 L4 i0 m- P
}
3 ^1 `4 q- q* Z" q
: r  |( n) r0 a( q) I1 r
# B5 [' i$ e2 u- W$ A9 Y# k6 A2 x; ?# x, e2 T% h( J
/ t  m% D6 A  U- A" L
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
$ `" U$ ~1 n; ~. V' g+ B- Q) V2 v' e1> 初始赋值时:CA b = a;* f6 y4 N" s1 B5 N  T! Y. i6 }! M
2> 按值传参时:void myfun(CA ca);
( }6 m1 `" t# x; X7 F) W: ~3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% j& r- E1 k- n- q' P复制构造函数在以下几种情况下调用:
( ]' v) C+ b" P& f  v1> 初始赋值时:CA b = a;6 ~  k' V. }: n) v
2> 按值传参时:void myfun(CA ca);
; S) W6 y0 a4 a) A
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-11 03:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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