鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
7 x" y" o, U1 k& r* e  Q% W6 ~' }5 l' A3 e: N0 b, s8 D
class CA
% g( K# Z. g% ]9 N, R  x* a5 G{
3 l7 h0 q5 L1 f3 |7 T/ Spublic:9 n  _& u9 H) K- Q' |
        CA();2 w& z( @3 L  d8 o4 V& R
        CA(CA&);
  D4 h% c& b3 q, F        CA(int ,int );3 u- M3 ]: c. R% }) G) I+ j4 U
        ~CA();
, F/ K9 U5 Z3 C        void print();' [! z6 m% W/ N/ o! g& G/ y$ \

  b* D" v9 c/ qprivate:. X0 \: z% M/ @: G9 k* v
        int i;
4 Y& s' S7 d, V4 P% d8 H        int j;
% d7 @; r; y2 p) S, c- h1 [0 B" G};
7 G! }1 U  A" R( h
& ]2 A- O% T3 F1 N% n5 j5 X+ VCA::CA()
; R* g: m; Z, ^$ _, a# s{
6 U! D! A5 U$ k/ _: M5 K}
  @8 B7 E, c. i9 Y, c
) h- @8 E% _; ECA::CA(CA&one)  ~' n. M0 z) v2 _
{
1 f6 p8 I9 H3 Y% |- ~1 L* r- J        cout<<"调用复制构造函数"<<endl;  e+ I# Y+ f. _$ v& K
        this->i=one.i;
. P5 Q4 K. v- W2 f1 t$ U        this->j=one.j;
! b4 N  ?2 _, D& L% B; x}
9 D4 f6 G6 q+ c. p! s. ~: X' y* D0 {
3 O* R# R! _4 o/ _$ J( d; QCA::CA(int m,int n)
* D1 ?1 l) w" g& }{0 M1 v# C$ E$ ]: w
        i=m;  Y& y6 C( C3 ~1 l1 p2 Q
        j=n;8 \7 |7 i' I& ?
}
' U) J8 Y2 q3 Z1 C2 f8 ^0 z$ O8 ^$ l
void CA::print()
& X  r8 v! h3 z  j( k{* J, h5 r$ M7 w3 W' x
        cout<<i<<endl<<j<<endl;
4 A5 B/ k/ B1 n" [1 i9 T/ @- E}" a1 u* G4 O# N. j. F
$ H8 e# Q7 W8 X! @$ s9 o7 Y) y. ~
CA::~CA()- q' f$ q% r. B, f
{
7 b" T# A  K: E& L% ]3 o3 x9 `}: N/ i* G3 B$ e$ L: s' r
" [2 @6 w0 e- ?5 Y
#include <iostream>8 |2 @  G8 z" B, `, R6 N
using namespace std;1 Q$ k9 T# x8 Y$ ?" x# J/ N
#include "复制构造函数工作原理.h"6 X4 D/ Z3 A+ s( d; `) V  d
int main(void){        
, M7 k6 z% |6 g4 _' l8 qCA a(2,3);        
$ M7 N( T! h, Z) z5 {a.print();      
1 Q) l4 _/ P! [( B' D& ]. z, t CA b(a);        + I7 Z0 W8 t9 Z/ r" y
b.print();
7 \; w, Z" u* p5 ~      
3 Y9 O- W# H0 i return 0;
( C! R, N  {: [0 `: V0 J! e}( C  X: T+ I# Z6 S- E( r

, h9 ~- a2 M* a3 u2 j
, Z. n* e- A: K8 A1 ~5 z
! b9 O& z1 m% [2 ~; \. v" F1 f8 a$ F
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& j) R& h  @. p0 D6 T& \/ R7 L1> 初始赋值时:CA b = a;6 b) V# e1 J5 M
2> 按值传参时:void myfun(CA ca);
) A- f" O/ i9 J, @3 ?4 |) G3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 : L4 T  l' B% d& a3 e8 Z
复制构造函数在以下几种情况下调用:
4 O$ M+ W- U! Q# t5 `) D) B1> 初始赋值时:CA b = a;+ u1 N0 _7 c9 }
2> 按值传参时:void myfun(CA ca);
' n1 h& D6 f, d4 M( T) f2 ~: V
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-20 21:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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