鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 9 b4 u! w- j" U  O
( }! R5 k) w$ k4 z' e
class CA
, Z6 N# B( K: g2 U6 Y; w{1 A! ?4 C+ Q% v, k
public:) P& i) M$ |% S( m& S' i# B
        CA();
2 G: B& g4 c8 c/ z+ Z        CA(CA&);
" L4 q6 m3 P) t; f3 T& [        CA(int ,int );
% Z# O, A4 X5 Q+ _  Y2 j; g! d# L        ~CA();
9 b- E& `3 |' A! F: z% E2 |2 W' b        void print();
) ]$ [1 g, y- {3 u& c6 I
$ i5 `2 x& U4 ~/ a" Zprivate:
* F7 W1 a1 f0 S: j! j0 B6 l1 m* B8 s        int i;
; C+ a3 u) |0 N# S3 S0 z        int j;* B% g$ t& ~; _0 H
};
3 F$ [0 M7 v& i8 V& I8 W3 D" A, i% _$ [+ s9 T% I
CA::CA()3 B1 r8 ?; e0 u  g
{
) z% O0 i4 y5 s' L) W* r}3 ^# M( T/ S- D7 Y. J& K, F1 k
" G+ [+ ^( Q2 m$ \! O0 a
CA::CA(CA&one)  {6 u  k) j2 q3 g  f* K
{
3 X# _% O. N3 W; ?        cout<<"调用复制构造函数"<<endl;
1 L- L$ r# W& m0 m        this->i=one.i;
7 j* I1 k5 [! j# \        this->j=one.j;
; I/ y0 U8 S7 b7 Y$ t3 {}
( x9 z: h) I$ l0 T4 N  z3 u2 w1 l7 {! G& [
CA::CA(int m,int n)
( n9 ]( M& v; |& I8 s{
* @$ }/ K7 I. c8 d: r        i=m;
- H/ P* w- L3 R; ~8 v* b        j=n;, K9 n$ ~; o$ y/ ?* F
}
. I/ N1 F) ?+ h8 N( f; S5 l$ B* k" p* W' W
void CA::print()
# b8 `. o3 @# n& k: G9 v{
1 H% \) a( k% Q& E4 A* L$ x* ^        cout<<i<<endl<<j<<endl;
5 v" B9 J/ A, \, f! w0 s4 w}
' B  n+ n" N4 d/ m! ?
& Y7 Z. @# o8 l" d: pCA::~CA(), s, @& _0 {3 u2 r; s
{
# B* ?& b: p/ n- P" E2 l}
' h3 _) R' [' \7 k) o3 T5 T6 [8 G% H$ w7 |2 @
#include <iostream>
; S! a' ~7 l! [, i- B3 @3 E" Ousing namespace std;! O0 O( P0 K$ [/ X- O/ G
#include "复制构造函数工作原理.h"! d4 {' \* ?# O) ~# @
int main(void){        2 U3 f0 h8 W: o7 o0 @
CA a(2,3);        
* Q8 R; i- o* o$ ~* A8 S0 d) x, La.print();       , v: E: P  N  J7 V
CA b(a);        
9 o2 _2 ?/ f( C/ eb.print();
9 l3 a2 j6 @" z! Y5 T: O: h       + l* T# J# s. w6 ~% a$ r
return 0;; h) I9 V/ H; H0 v3 y0 w: Q
}
) f/ A5 k8 K9 J, n* \9 k1 n2 N! ^* H" |# g6 R1 G
, ~, C- m- }% a( y" o0 `1 D9 g
) C. [) E+ c  ~$ [; a

8 V6 ?. @* o) x7 \0 i1 w, d% Z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
4 m8 w4 L. q" g& R3 H1 @- H1> 初始赋值时:CA b = a;) {4 T  E" T: B$ u, v! P8 i
2> 按值传参时:void myfun(CA ca);# N/ b% `8 b, {' S# H
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 " C5 E$ Y" ^. |2 |# k$ q' C6 r
复制构造函数在以下几种情况下调用:" j! `; n( V7 N& O2 l+ d
1> 初始赋值时:CA b = a;7 Y! C: B8 X* U
2> 按值传参时:void myfun(CA ca);
" x# i. l6 G% t1 J( a' j* q' p  ?" O
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-6-22 18:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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