鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
% k: k) O& S% v6 {- T$ z" X' \$ u8 O* _
class CA
, v$ y: y/ Q1 p1 Q$ o4 O{5 d$ n2 B. R& b& q
public:
3 t: x% F+ b/ i: g* ~2 u        CA();/ `. K" C! H! p" s: o
        CA(CA&);
! D4 k( z0 B4 _' k        CA(int ,int );% `  G5 ]; k  M& |; s& X
        ~CA();- x$ v3 X5 k& m7 r1 k
        void print();) l2 V  [% Y3 v5 W. \8 u

, M5 e2 j: |0 [7 Y3 ~3 fprivate:7 G; R# H+ N/ l3 Q
        int i;
/ q, t+ G% N9 `- n8 H        int j;
: T) c0 Q$ H% r/ O};- G) y( W! U9 b4 f

6 q; T7 h7 j% `# c8 uCA::CA()
6 C/ ~7 K( ]' a/ i5 y{
$ `  R+ j5 f/ ~# ~}3 z! ^' W( Y- p5 [
; S. ]% L4 N! e5 k# l0 p' ~7 S
CA::CA(CA&one)" ?2 L, H4 J1 L3 @7 ^; [
{# t) S6 F9 m' F( D1 m$ H
        cout<<"调用复制构造函数"<<endl;' ~6 B3 m+ m. Z$ Q/ @) V' _
        this->i=one.i;
5 g) E+ q5 A2 q  H& Q4 {        this->j=one.j;
# ^! O. K/ `9 J2 {+ I) s}) N! _7 f5 I7 ~4 @+ ^; |, O
0 t1 @  ^4 \8 {- f0 P
CA::CA(int m,int n)6 z3 w" `  r. {+ h. L
{( h' W0 I$ P* u0 J! s
        i=m;. p4 q3 D. Y: k$ F9 f  T* z- \6 @( u
        j=n;
9 x9 u& u1 x' _& S: `# {! _; Q}; u. B" T% d* U( O7 q% L
4 f' X3 \# }) D! c' U
void CA::print()
7 Z' B! a$ \: O, o# |# Y2 Z, _2 P5 @{0 [0 P" v) ~( k0 ~% c# ?7 o8 ~
        cout<<i<<endl<<j<<endl;
7 u" W' ]3 m" i6 i! X, |+ U8 p}, S* `( e( r; B- }' l/ g9 c+ Q: S( {2 j
  s6 R$ m( o( \
CA::~CA()6 v' y6 s' D; W2 |
{! ~* ]# r$ A3 L3 K- Q
}7 Z1 ]  h; A  P1 t3 s8 u
9 q/ W7 j$ }; `' x7 ?& [
#include <iostream>
4 L+ p+ j" \* _/ l- o6 Qusing namespace std;4 L5 e# O. ^) i& Q& u5 P, a, p
#include "复制构造函数工作原理.h"
; o( `0 Z' f. A! U, Sint main(void){        
- u# R( y' Z7 l& l1 GCA a(2,3);        
, Q) ~0 O: h4 q; x& h, S' |a.print();       3 O: d  c/ O) s. C  g: Z' _
CA b(a);        6 U5 V" d+ ~. i3 F, A) g1 t5 c
b.print();
, e6 X( r2 \- K5 V( w0 \' K, S       3 i8 U4 {$ h+ Y: D( v/ X
return 0;
1 U% k1 A  ~8 E( _( A* V4 ]7 c9 ~}# N# b3 F/ x" ]' M: [9 z

+ k, r! Q( }. D$ f& x( [; Y5 n7 J* ?, I- C$ G3 {1 B, S- ]) j
/ X2 z$ ?' F1 y* a+ L1 ?

7 i3 w0 V) f! @  a& w: x2 o; t
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:# \" `) b% }! i, J& {
1> 初始赋值时:CA b = a;( H7 ^0 a0 y* \6 J4 t
2> 按值传参时:void myfun(CA ca);4 f% }  Z! n7 x2 R2 j
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

% S" F, j6 s1 ^5 ?( t0 D: u. A! J# m第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-11 23:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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