鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
7 B. Q7 ]% z7 f# p7 t' Y6 v( F
1 R% K8 x5 G2 J9 vclass CA
  [! j/ N2 R0 S# X) X) f{: R/ @/ V, {4 I' C* J! y4 `9 b" Z
public:# b# I, t6 I- |+ u, y& H( q6 W
        CA();
! a1 t4 P2 z% F/ R, T        CA(CA&);
# _6 \5 ^3 \# C; s        CA(int ,int );8 a, h) F9 i* d/ ^: {
        ~CA();# s6 F1 Z3 I7 U5 D* m1 s
        void print();4 I. t! z/ C, [/ H/ i1 @

# r$ w' `7 T5 ~3 _, l3 ?2 g3 uprivate:
- z) k/ a$ X+ h4 j1 @( _! z1 J- o# y        int i;
4 B& t, _' O9 D( [8 M/ x: ~        int j;6 J  Y' Z  T+ a6 _4 r
};
( i4 O( Z+ N6 k: D( H+ E$ @! c: Z4 l9 Z
CA::CA()
& o% A9 o% q. k9 c6 T7 m, u2 z8 m{2 B. X) _+ K3 X6 t2 M& h
}
/ g( I& h4 M3 X; m8 F7 W8 X4 }+ I2 t: ^- X; U! X3 K; S
CA::CA(CA&one)! G" d- \' D& a& J0 M7 l
{
; M" Q! o; ?( t3 ]* w; ^        cout<<"调用复制构造函数"<<endl;% A) k/ U# b) F' U8 u7 k4 z
        this->i=one.i;
; C( u* r' I: h2 ~6 N; L' Z        this->j=one.j;- c: Q- P; ^& I
}
& i# H2 N+ w# j6 ], y  C$ Q; ?9 w2 B/ ^7 c; _* z0 Z2 g& y
CA::CA(int m,int n)
7 ]9 n, f& e3 w5 y8 N. T6 _! n{
" p8 y! \& e/ U        i=m;3 b9 p( S' o/ |' F) ?- N
        j=n;
* @1 e" B5 r- I3 F6 |6 _}& J+ _3 K; U/ O% M. b  r) y' h
/ |& n2 I) e& A, X! \. l2 z+ f  Q
void CA::print(), R7 J7 Z+ g$ i6 {
{
, z/ h, i, ~+ O  L& a6 v5 A9 F        cout<<i<<endl<<j<<endl;
+ b& z' p# G0 m7 P}! W4 r! _1 j: a7 t# B: s

$ a" O6 H4 H, X& T# Q2 FCA::~CA()
4 Y( q7 w" e' y- x4 k- m( H{7 t0 r: z1 o$ l" s4 V/ t- I
}
* ~3 i3 a. i* S  O1 f2 G- T: E8 c0 B7 ^) S  ~: a0 G. ~3 m2 w: ^! `
#include <iostream>- \9 g: k" C1 R( x
using namespace std;
0 v7 \$ }6 m. B1 |/ [" S$ d#include "复制构造函数工作原理.h"9 X, q, E; U  j! f
int main(void){        8 m5 D8 \9 D; G/ F3 A! f( m" @6 s! c
CA a(2,3);        
9 h9 a5 q8 l9 n* I6 a. Z6 q, x, da.print();      
# X$ w0 `$ y6 {- P CA b(a);        % f4 T$ I* U( m% j! [, Q
b.print();- @! `0 w/ h* @; z5 `
      
/ ^( K- V5 W1 C1 |( H% G- f return 0;: k: x% K+ i) o2 s$ @& J7 R
}8 Q4 A8 ^# h) f: {% `

2 V1 s. P5 V, @6 l9 C% t+ `3 R7 ~  Q1 d2 P
" A& b0 s6 F+ y& w# W

0 n- ?6 ^1 J* v) ?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! q* Z8 K0 a! W: h- M1> 初始赋值时:CA b = a;
  Y& P9 D8 U6 \; g2 q' K; q, U2> 按值传参时:void myfun(CA ca);
/ b1 z, L3 t2 P8 I0 A. u3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
3 V9 g' {* G5 Y% o
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-28 20:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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