鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 / r- W* [3 p8 S

: L' h  e" Z1 T" d3 M5 bclass CA
) d/ Z$ t/ Q& W* J{6 s6 N/ y& _9 U$ e: o
public:% T1 J; q- H" X% }. [
        CA();
- K7 i+ s9 A- @/ Z! k$ y; o        CA(CA&);; ?+ n7 }) N% a' |/ G8 I: g# ?  w
        CA(int ,int );
2 k4 s) N3 q% y; `; W5 ^        ~CA();; r8 @, M6 |% V# y
        void print();7 T' `! T/ Y6 g& G4 B
  \! @- `4 W& Y/ i; P' u
private:+ ^8 \" p9 |+ t) b# c% }
        int i;
# H- @( e+ N! r) B  n        int j;
' o2 ^* |# n, ]) z/ j};" p9 {8 |# n9 i* f
3 ?# i  d4 e  _* @
CA::CA()1 x) F+ `. l: k( |! a
{
# h: ^# {( s6 D" q$ E. C9 t}
' h) A' k2 Z$ {' S1 ^; `  Z4 _. a* c1 X: M8 \, [7 U+ [
CA::CA(CA&one), d: X4 f& e8 G
{
; e: N4 I; v$ n" T        cout<<"调用复制构造函数"<<endl;
1 ^' x# L  e' t" ~% X        this->i=one.i;
9 ?6 w1 t; V5 A: \. I        this->j=one.j;6 i' m% ^" r5 w' B3 S/ l. T
}! ?9 H: o0 n4 a9 X
+ H, m2 Z3 \4 u# Z3 U! r
CA::CA(int m,int n)* X- U9 a/ o7 L) m# O* M
{- p) S- s( `9 V6 n4 J
        i=m;7 ~+ A! {6 k5 m9 W) K
        j=n;2 ]- n! a* T) h1 M/ L3 S8 O' i. j
}
+ L$ j5 c7 w' b( @" \. P; f: R( e0 @5 N# a  K9 j- R3 n
void CA::print()
% X; c) K7 W7 |* n5 j; h' Q{: c1 l+ u5 C+ o$ G
        cout<<i<<endl<<j<<endl;7 n" h8 ~  H! B$ t7 D# |  @/ I; e
}
3 J6 ]/ ?/ D) Q0 K
2 C" m. ?# U) i# k3 i# KCA::~CA(). G; d  K" C" t
{
/ D0 S  z# ]1 e; P2 `}* e$ l# [6 u: x, R# O+ ^) U/ f5 `
, d* ]# A( [7 l3 C% ^
#include <iostream>: _6 G' O, t, {/ P8 L! c
using namespace std;3 I6 x, y8 I1 Z7 I- T
#include "复制构造函数工作原理.h"/ `+ \8 E! p7 N" t% t
int main(void){        
$ Y" y3 T9 I. a: _/ P! }' R+ _CA a(2,3);        . o2 V, d) |9 Z0 D
a.print();      
) r0 _& e  L; O$ I7 ~8 u& I$ z CA b(a);        / |. Z/ ^$ Y( L7 K% U% z. q6 q1 h3 }
b.print();
5 C* m2 X' I& T3 t2 P" T4 C       * r8 H# _4 H. b- z
return 0;
8 d2 \; Z" Q& l5 W3 Z: h}
4 }2 T0 d# V6 u. F: B, ?  t& h7 |6 |
1 ^( x7 W8 V, z5 |; R8 x3 m
4 o: f( g7 S6 U# E9 W" n! }* R

+ A' U9 v! v4 z' b" c) Q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
6 b( ]" z* N/ A2 H2 ?) \1> 初始赋值时:CA b = a;$ S# j0 d1 Q% M4 Z/ C
2> 按值传参时:void myfun(CA ca);; M5 Y) G: N# ]/ R+ q
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ( w+ f: T; H8 Q
复制构造函数在以下几种情况下调用:
9 a5 X4 n/ v( r6 O! ]3 b, L; }1> 初始赋值时:CA b = a;
3 c( ~: `& Z: M% Y8 B2> 按值传参时:void myfun(CA ca);

8 i3 L$ ?; |4 U9 d' L4 ^第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-18 17:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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