鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 6 [% ]! V" ]& d

; k: q$ a/ r0 d& T9 f& dclass CA
" \7 s( w/ n8 f+ ^' N# y; E{; `3 f8 J; H* \7 n& p- L9 b
public:7 c- j+ k$ e+ D# e. i+ j
        CA();; ?( m7 W! ]+ G) }8 A+ b. `
        CA(CA&);, j& v, p2 M* p* u, m
        CA(int ,int );
, }9 L- P9 y0 N: G        ~CA();
) Y3 |! v$ W  k        void print();
: L1 G* }9 W+ |' \' i; ^2 ^* O$ s1 F6 ?8 W8 u1 t' I
private:
6 B3 \, H/ H: j. c0 Z5 j        int i;5 S; k' Z8 S3 c5 L: a+ H
        int j;
9 h0 K8 Z+ i& y};9 ~9 M, C) V! x+ S, M

/ S& d+ T) F$ \# N. n9 x, ]! JCA::CA()0 N7 O5 Q+ J6 y; Q
{) k5 Z( m" e" L. c
}
2 N' j; K& s% u' k, M, R% s
3 k' j7 P2 e6 X  I9 GCA::CA(CA&one)- y, A( l$ ]$ N3 u/ g# x
{5 v) M$ O% `; l3 n, g) I
        cout<<"调用复制构造函数"<<endl;
2 o% |& u5 b7 c& [. g' i" |  X        this->i=one.i;  F2 c4 K7 D; |
        this->j=one.j;, D1 B4 `. X* O! l9 T
}. P+ L: K+ b3 |; J1 F! N( g& I
+ V7 r  B7 `4 S4 ^+ t3 G
CA::CA(int m,int n)8 _" x$ W5 B! M+ u3 g$ Z
{: {9 t. @" b+ {1 h* J2 B" m
        i=m;
5 x# v6 y) G* i        j=n;
0 `/ b& [5 V) N! G1 C7 E+ S}4 [3 n3 B. u# P: O( C) ^3 A6 N

! a/ c) a9 V& S3 nvoid CA::print()/ s, ~! w2 t7 ?1 |5 R( A( b
{
; G% X* Q% B6 U7 ^        cout<<i<<endl<<j<<endl;
% x& w7 g( H, ]* D/ |0 |+ K}
0 E3 \2 C% I9 j) _* ^+ s' G2 [/ u5 H7 o: e: D
CA::~CA()
+ z5 F8 {6 m4 v$ _{
. _% {" m% G, E/ W}. u$ Z# A8 L6 T) S

3 v: p  }" h) w0 O' j# M#include <iostream>
# ^4 Z) D3 B6 {using namespace std;) P, B2 x9 W9 j/ d- h3 j3 L- P
#include "复制构造函数工作原理.h"8 z4 L' t1 y2 l1 s
int main(void){        5 Q# m% p' W6 r& ?" }
CA a(2,3);        
  f0 W- @# v8 wa.print();       4 o1 G; M! t5 S4 f$ ]% h
CA b(a);        8 H$ l& m2 J7 h2 }% J
b.print();
) Z( c# p# i+ ]) h* r       ; W- L" l  D/ v$ }
return 0;) F& m% u; g' U. m; {6 ~2 Y
}
. n3 }2 `  C5 o1 Y8 {. u& s$ l5 i4 r5 f  d) o' o9 A

9 o' {% r% C9 G) |( J1 @$ q, X0 ?) w9 G. W5 j

0 E/ T4 O3 x- M$ x1 y/ B2 K0 I9 S
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:; x2 C) K2 J3 V
1> 初始赋值时:CA b = a;
! r( L( R1 a! v1 j8 A2> 按值传参时:void myfun(CA ca);
; m4 r7 {; ~6 v3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
; c  F, Y# R: j4 ~9 h复制构造函数在以下几种情况下调用:
; f5 v. M3 u+ W4 x: X9 U/ F' W1> 初始赋值时:CA b = a;
3 W; S1 h! H: p& d$ o: e; y- \2> 按值传参时:void myfun(CA ca);
$ L2 G* i. v. H) P% N5 F1 C
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-11 19:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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