鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( x6 u; o2 n. H! p. Z3 _. T6 ?3 ?
class CA
( K9 O/ E) g) U% n# z{
- g* Y- s/ B5 D) ~4 e" Jpublic:
% t6 D1 x+ X0 {; ~. y# z$ u) j        CA();8 a$ l2 o( @2 d4 Z) ^7 Y' V
        CA(CA&);
$ W- I; H9 c) T6 n* m& ]6 x- o        CA(int ,int );9 g) C# f. q9 D, c: K; C
        ~CA();. S9 `. r& o2 O% p  M
        void print();) w# s& Z/ L% B: e$ q# Q; \, w+ g
7 r1 L, w0 U7 Z0 c% Y& [
private:
% O  m3 s( W4 i& b! `! [        int i;
2 b9 D9 J3 ^- R* h# z/ e, h        int j;
4 ~) ~  u. a4 v( s3 ?6 ]};; y6 l0 s, y4 N# Y- u

  y8 O' r  j( ]3 ?& C: zCA::CA()& P7 R7 q" R3 O8 T5 @: O
{
0 {0 N! F/ L% u& ]# V9 P) ~}! {/ f' |5 p% M8 L2 D" j% P

1 b% _% Q0 N, m& N3 NCA::CA(CA&one)
  F: A9 k: F# J7 t/ W, u8 N4 Q{8 [# ?4 _( w7 ^8 e, g- S
        cout<<"调用复制构造函数"<<endl;( K. k  w4 P) J( H; [: F
        this->i=one.i;9 y) `% A8 N- N: i4 G6 g
        this->j=one.j;
! A- x: d# {2 k1 ?' l5 }9 E}- c( d! e) L$ l2 {
7 p3 x1 s/ Y/ n$ w
CA::CA(int m,int n)
& M/ _% a$ Z. ~# X. Y) l/ B{, m. _8 V: A+ u
        i=m;+ s" g0 y' A& y& T( `$ `2 m4 `3 h. S. b
        j=n;# N; c- O% a8 u& @$ C, ?& d, ~2 ?
}0 D5 |/ Z& c5 E: {( A' s3 j

1 l% k+ O( d. mvoid CA::print()
/ G" F8 }) X0 W# K3 }: B{
7 ^) K5 c. r$ n3 w( S( j        cout<<i<<endl<<j<<endl;8 j* S3 y  Q& n) Z) q
}
0 U1 S5 T2 a+ w; d; T2 p$ b; T# S& S, g( O
CA::~CA()8 b" d' B% ]* W. p2 ~6 o% Z
{
# U8 n2 m4 V; S! z9 T! e: Z$ f9 ^}
' d/ `7 C9 g  S) V) v+ j4 I" Z  R6 s$ E
#include <iostream>3 t; o' i8 k# ?& T6 s
using namespace std;1 E  r; t; w& M& X% F: L8 `! l
#include "复制构造函数工作原理.h"
: I' H; z( g: S4 m2 Q. uint main(void){        & L4 j5 H3 k9 W4 }
CA a(2,3);        
! i" H6 d+ l- F/ ~) K3 r6 `a.print();      
- R' a' Z1 i& ^' ? CA b(a);        
/ o: y6 y- |2 V$ o% r, c$ O+ d1 z3 \b.print();7 D2 L  p$ I# f. S! u
       ; [4 n5 H% V# T. l1 E
return 0;/ R: P2 O8 |' E% O; D4 Q
}+ B: e+ s6 w+ \; p& t! _
8 z4 J) b8 A3 H% d& F5 F4 V. A
0 D( `+ h5 [$ Z$ g2 L

+ g& e9 e5 s7 s5 |) h/ x$ c7 ~0 n9 h. p# a; U9 [8 o/ o% u
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
! Y$ s+ E  R$ N" H+ z: a7 ]8 Q1> 初始赋值时:CA b = a;
# e/ z4 [% I7 v& y% F  e. D8 V2> 按值传参时:void myfun(CA ca);( T" o8 L) V4 u% e2 l
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 , m" n( r! W5 R/ v+ i3 S
复制构造函数在以下几种情况下调用:
6 N! C8 I  c# K* _0 H9 i1> 初始赋值时:CA b = a;
7 A; v* t; f3 d+ |: L2> 按值传参时:void myfun(CA ca);

8 l* Y. o# ?# |. O第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-5 03:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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