鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 8 Z  U: H& S2 ^, G9 T; ?
7 Q: M& K* t1 N8 f. s% d% ?
class CA- Q! R4 {& l4 y0 ~
{6 U9 b% C) A% c: y7 A
public:2 ]; _7 R) F5 d( k8 ^
        CA();( v! P; ^/ N# {& J# ]
        CA(CA&);3 v5 {! R' W* S
        CA(int ,int );
4 c+ v$ l) g, q4 N) [        ~CA();5 v( J# v1 @- g. C' d- b4 N
        void print();* b& x9 g6 ~! x  }

0 x$ d2 \4 s) N3 Wprivate:
3 k6 n; `& h& S  |2 H( k. |        int i;. u0 `# Z  [" R; n% g' J: f# }8 D
        int j;
2 [6 G$ R- i1 T};' {1 `( L" R) [+ ~- l! ]" F
1 i5 \; e! Y2 Q: l$ h
CA::CA()2 n6 S( O8 O4 G; d1 J* [
{
& j/ O) E. E! Z- y# ?}7 o7 i6 q# b$ g7 M' R
) u! ^, i6 n4 f
CA::CA(CA&one)
1 s4 R- P9 l; R. e{
: }# W* m( M& n  N' i$ S        cout<<"调用复制构造函数"<<endl;
' u' k! Q- {7 `" s' P4 o6 o8 \        this->i=one.i;1 t9 V! @# M; Y5 f. p2 ~
        this->j=one.j;
" P! c4 a! d) W, h( {# \) K}. G, M7 ^& U1 w0 n

. T, Z" H7 M5 N# [# E/ tCA::CA(int m,int n)+ D* n2 A8 {+ V; b' V; o" b  g
{
  t. m$ F. Q& r3 p, t6 C8 I; H        i=m;9 R6 u# k, l* _* O2 K  E% }4 Y
        j=n;8 a- f) @$ L7 K+ ]2 {
}
3 Z4 U1 p& u; R+ J" e4 R
  v1 B" C9 D2 Nvoid CA::print()
# w- S* D$ l7 v( W{
4 i. j1 I7 l/ {/ J        cout<<i<<endl<<j<<endl;# K. ?( y, c, f' e. [- T
}
3 [5 ?# Z/ Y5 [; L* S7 I1 M8 q9 P
8 h. O% Y# x8 N5 y; lCA::~CA()
8 B8 j9 V- C: L3 K, y; x$ O0 @2 x{
0 r6 C$ `4 l' Z# n7 l}2 [2 ?0 ~6 H# W3 N8 j) C
: e& @0 L- x" {# C5 u% S
#include <iostream>+ I7 b1 H. T$ l8 S* c8 O4 ~
using namespace std;& c( ]/ }1 O7 u' ~; }
#include "复制构造函数工作原理.h"- [2 q2 q- h! B9 q/ b
int main(void){        
- a8 D. V& B" M$ |. vCA a(2,3);        1 e" j) e# K$ y( u7 \
a.print();       8 D) m: q6 p4 A, @2 k
CA b(a);        
* j+ X3 h0 ?8 f0 a2 V) x& X' }b.print();
- A& b0 h9 F) `7 z: A' W/ B+ I      
( Z7 x* y) A0 D8 ^: h2 t return 0;
' Y1 Y, P* T$ s4 {! a& q; `' l  X}
3 d. n, P1 J( v4 |( Z# g' c" E0 g9 \
9 m( O/ L& f" i7 Q- u& \( v% L
, y0 \9 ?# o- P
- x  C/ H$ H7 g+ ]% f) C+ b0 _) X/ H; s' c, L% u7 T4 f
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:5 u( |* D% T& {. i, c
1> 初始赋值时:CA b = a;) p) c9 u7 {/ W, [  a# ~& u
2> 按值传参时:void myfun(CA ca);
" d0 w- B" H! l) W5 W: B) ^3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 4 _( L3 a0 J- |5 v; j
复制构造函数在以下几种情况下调用:
$ }/ j0 X( p" k% J8 w1> 初始赋值时:CA b = a;9 j2 j. ]8 c2 ?. C& s' ~
2> 按值传参时:void myfun(CA ca);

0 H' M# f3 T. C1 d第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-22 22:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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