鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
7 p: a  d! z, m2 @" ~- e% r, `$ y
class CA
/ v/ G; e6 z. ]1 |& u" ?{
2 {7 E/ O4 F* V% @! U5 }2 dpublic:
* \9 O) F' D, K1 Z9 {  F6 Q# r+ T- g        CA();
8 i7 r/ C; q/ T# n; [        CA(CA&);
# v! |4 }( d8 b        CA(int ,int );
! E+ P0 e/ `% V/ }        ~CA();
" h& L2 g4 u) k# ]: ~        void print();1 C# n: N5 n1 ?8 n6 [  k0 B1 A
$ g2 r6 I3 H% t7 C+ F$ d' U: b# S
private:
6 g. r7 T/ B: B$ F; `% M% E        int i;1 H. p! s$ m; @+ c2 h  y
        int j;: t' L! H1 i2 d) X# `
};
$ `8 w( y2 p$ e5 l4 |3 O3 \
$ n, S2 W2 o3 v) K* Z+ X5 n: H2 ]' hCA::CA()* X( b8 E7 f7 v# U
{( V4 L" P. u! t% c+ \" \
}) _( `$ j2 i* @  ^2 U4 o8 r
1 p# Z" E0 F0 E
CA::CA(CA&one)
2 \. y6 {$ L  {- f{4 d, [6 O; s3 C4 `& P
        cout<<"调用复制构造函数"<<endl;
2 f4 Q0 \8 w# I8 L; o' Y        this->i=one.i;
7 X5 @/ Y5 V. G& r  o        this->j=one.j;
# e1 l4 f( [7 M& @0 w3 J}
( p! I7 e  k6 H" c, g; A2 q
- q' B& K8 u6 ^/ [1 w& w# f5 R& iCA::CA(int m,int n): Q# ~9 M* J7 d) k6 m
{) F) L# O; ?7 }, ?% L
        i=m;
6 K0 V* g5 e2 f3 B        j=n;" H) v! Q) R" b) g0 m8 g7 `1 o
}
& C1 t$ L. R& @4 H/ a" s# d8 ~! g
: D! B4 ?' \5 U: Z  yvoid CA::print()
7 T, J6 G/ A! o9 q6 B# Z{
* S5 U2 t1 F- J# Q! L& a9 u+ e% P        cout<<i<<endl<<j<<endl;4 o1 U8 K: o7 X, \" X
}
( T  z8 l. H- K1 y4 w! Z9 L& H3 z# x$ `) F6 k* `8 {+ n/ D4 R# _
CA::~CA()
9 f7 \* Q8 T  g# V' y! k4 {. u{$ ]( c5 r# X* S# Y3 p
}
  m* ?* U0 u: \( E8 P2 w: A5 h* f1 @" {- r4 D7 X; ]/ ?  m/ _) l* u
#include <iostream>
8 G7 A0 R' l2 J* Yusing namespace std;
1 o4 T- h+ _# N- Y! |3 k9 a#include "复制构造函数工作原理.h"8 h, T- v1 @) v5 Z$ z
int main(void){        & I- [# T  P1 n7 f- H
CA a(2,3);        ) ?7 |3 c0 F* i9 ]9 z& r
a.print();       / u- ]4 y. `, a) o3 [' V! B! R
CA b(a);        " M* y; J. ?3 p/ D. ?$ g8 H9 _, W
b.print();" u# e  Z- u* ~3 f/ C2 ?! f. h
       % x1 a& @, u- n9 Q9 y
return 0;
) \9 G+ `8 p  z4 J2 Q}: K% c4 g0 M1 [+ w/ {6 |
5 l8 Q- G$ ~8 t  \8 i- P0 w. T0 z

9 @4 j6 ~% i  k2 Q7 m; O5 b$ C8 L$ y/ {9 j* D7 Y( ]* b, p
8 w7 K/ Z+ _: O
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 s& y* B& G/ V6 u
1> 初始赋值时:CA b = a;
$ A' S2 D/ D9 \2> 按值传参时:void myfun(CA ca);
% c0 A5 a0 Y3 ^( n- C3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
" M9 g, R* j8 g: N; E1 ~; x% ]/ C复制构造函数在以下几种情况下调用:" q4 P4 R) y) p) ?. j8 E" e
1> 初始赋值时:CA b = a;" T7 a; s6 u( k& t0 y6 i
2> 按值传参时:void myfun(CA ca);
  M1 v' [" \3 m  a- D, M
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-11 12:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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