鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 . J8 ~/ I  e; Y6 R, |) m+ M
# J7 k/ K% X8 Y3 x/ a
class CA+ @1 {8 B+ v& Z: P. ~
{# j( i6 H  s& o
public:) i9 ^6 {0 ]1 H1 a
        CA();
3 X4 R% w% F6 V- V# D/ P        CA(CA&);
% |# p" [' ~5 D0 N9 |3 J        CA(int ,int );
# U9 A. |1 n! q9 u        ~CA();+ {- X3 B! k( h! |
        void print();8 ~, s" R: f+ t/ s  E1 r- U

6 W' P% l2 e- i! Aprivate:
% R7 y4 w, h1 n2 i- s4 E9 X        int i;
6 ?) z1 m. M7 q- C; d/ l& |/ a; k        int j;
) k- E- ]( C. C% y0 T. ?6 V/ D};- e/ Z3 r% ]5 I  q: A2 y
5 `( ^2 z' E+ X! `2 \
CA::CA()  I0 o, y1 n; I
{
% n& K1 z+ Z, V% G9 A}1 W* Y1 G$ o; M6 K! G/ G

+ J0 q; X0 y* M6 C% u! E; y4 c: d2 FCA::CA(CA&one)
* _% S' H% @* Y  j{& l* {; l% X# n
        cout<<"调用复制构造函数"<<endl;5 H# d7 M9 i, t3 @, e
        this->i=one.i;
* Q; v1 v4 ]6 m1 M  e. h, p        this->j=one.j;: A  [! ^8 [# C9 E7 v$ |" U' ~& C& R! O/ ]
}! g7 [, ^8 {$ N0 ?0 F" S, L% b
0 x, I' L3 ^4 L7 P  w1 B
CA::CA(int m,int n)
* E) d2 ^! X; q# F9 b! w3 B# R& G{2 n. F  F# L/ U! p; G9 _
        i=m;8 h6 s% p2 U) h: p  _# J
        j=n;! p* O" r" Z$ E( }
}
; x* t3 }1 k( d/ o9 E4 o3 n2 c3 b. Y' p& S8 y- ], S( T4 K3 h) J
void CA::print()( _! Y1 `2 T; m" n1 P
{' {. s6 n% E9 [: J! p$ v$ m3 h- z
        cout<<i<<endl<<j<<endl;
1 |6 V% Y4 g0 }9 I5 X; X& B}
! T3 n2 ?$ M; J+ _" U0 P6 Z; V& _2 C7 G+ ^
CA::~CA()
( I" z5 n  h$ k2 Z5 ~! X$ [7 x{
/ `' w0 A: s; n( m}
1 {( d& f2 T# S3 r; D- Y( V
' Y0 r3 k9 G$ ^" y#include <iostream>
! a' }! m# `  j4 musing namespace std;! |: T$ K- ^6 x. W% G/ h$ p) q
#include "复制构造函数工作原理.h"
7 H5 u, S1 Y& [6 tint main(void){        
8 k+ p8 f0 e6 h+ J1 eCA a(2,3);        
+ P' E  ^" j+ `( La.print();       2 T6 X9 G; y) Z9 q6 J: T8 g
CA b(a);        
( z: z" ]! m9 ]b.print();
: E. o9 P( l0 ]' `: W       ' `( a! t+ I$ X! V4 R6 p4 H2 F0 i
return 0;; H  y8 b% n9 @7 B9 _2 x+ e; F+ v
}, P. i" N% u# d- n) H1 w$ g) R' u

5 T: a  k' Y7 {8 s% g' f! g2 k0 P% Q

# Y1 L5 m- T: M2 f0 U
! x/ e. c- g3 \3 N4 h2 W# N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
; M- Z) K& J0 H; u1> 初始赋值时:CA b = a;
; x/ T; Z/ h8 ?% {2> 按值传参时:void myfun(CA ca);
9 N, B! c8 N, c# A' ?' W3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
! Z) U( m! m; g! g' m& \7 i复制构造函数在以下几种情况下调用:8 t% X, F) \! i+ y8 c3 Y
1> 初始赋值时:CA b = a;
8 z, F8 o2 S* F  g# e2> 按值传参时:void myfun(CA ca);

* o. ]2 d: e3 u9 R' L+ I: ]& r" v第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-12 04:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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