鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
+ w8 I7 v! t* X$ |7 \
' ?& z8 W7 e0 w1 Uclass CA
) ^7 j* R! m/ n& n. A; ?{+ u1 @4 f+ d% L2 k
public:& F  @* Y9 v2 E0 W
        CA();5 i6 x# V0 z* h3 N  V( r
        CA(CA&);1 `! }! X2 A+ ~4 n" [! d9 ?9 U
        CA(int ,int );
2 A' M4 A; D1 b9 @        ~CA();
, N' }/ s# C# f) W. \        void print();; n) \- y* n6 m3 S* Y4 v6 S
( {3 X5 h  q( \4 l
private:. \7 N" \) N0 a, U% s
        int i;
' f  q7 P5 B- D/ d  a. o        int j;
, g( @$ I3 `, a5 D};
( a( E% I7 Y5 `* M/ T1 H7 \5 f
- h# P& @2 W+ m2 ACA::CA()
! C/ m% e4 ]1 z) Z- o{
2 u0 m9 t2 x+ O}8 B7 W# n0 _6 N, y, I/ R: ?
- Y- D" B0 g. d2 s
CA::CA(CA&one)  P* R& V6 H& B9 m' P% M
{9 W  O1 S) j2 ^# X0 `  N: `* j
        cout<<"调用复制构造函数"<<endl;7 j( f$ F: o: u8 R$ A& n: |
        this->i=one.i;
* o' `+ I0 G* ?& U        this->j=one.j;
; Y- M4 T* H3 P3 a+ U" O- t}6 @' i  W% x) C5 _6 K& R5 ~

3 f5 M6 K0 k# u( ]3 V  uCA::CA(int m,int n)
9 ]. {, v* H7 x{
% ~: N2 H: y, D& q' h" z0 Z- {        i=m;+ |4 z% y4 q( X* i2 ]1 Z; v( V
        j=n;
; u0 O7 }/ Z) L6 j2 O7 S+ B: G}% r, l, S5 l# p4 D) v, P. U

6 t. E$ c% N8 C0 z% avoid CA::print()  z/ A7 X+ A5 L7 T# `
{
. a" y& e+ \! W2 }0 Q8 e+ v1 n$ b        cout<<i<<endl<<j<<endl;
2 z4 O+ `, s- h$ Q  g}
+ m% j- A- ]. C, n8 t1 T2 M* k( l# ?$ c) l3 T
CA::~CA()
2 ~: e! R% H8 L$ V{
4 K$ H" K, k6 n! g- E. u, l$ J}' T) ?, @% k5 I/ x) g

! n* q. x9 J2 Y6 K$ X9 R#include <iostream>$ S3 A5 W( Q2 J0 ?, L* J- F0 I8 a
using namespace std;3 D) u# v0 H- A/ R7 V
#include "复制构造函数工作原理.h"# I: V  Z6 B; F9 q& v" {
int main(void){        0 K) i. R& G* X$ }8 _! O  \- B
CA a(2,3);        
8 ]& {) k  @' J( j! Va.print();      
4 n, y; A6 o0 j6 | CA b(a);        
% |4 @' S! Y" v  {- nb.print();
6 D2 W( ~) ~% ?/ U' Y, a9 V       ) I% O9 ^% v% T7 k
return 0;  H1 b: [" J% n: P" E7 P+ L
}
# x+ E& J$ [$ Y+ O2 _* l& f, u  G( q/ l" B8 y" D* Q
$ v! t# k6 X1 V2 B# g2 b

6 A( f( _$ t: G2 n( B) Q3 ~+ q
: K6 P6 `( L/ s  Q4 v9 z1 Q1 ?8 w
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 o  o& W4 S! [7 I! O6 Y
1> 初始赋值时:CA b = a;
4 v: y( s" S; c$ x2> 按值传参时:void myfun(CA ca);1 d9 {! P4 ]5 x, t2 m& i, |7 d9 M
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18   T/ K" e, E& c4 G$ ?
复制构造函数在以下几种情况下调用:$ G3 ?  V" j) @) Z  r% D
1> 初始赋值时:CA b = a;1 g, `3 u8 V3 Y8 q$ ^: D
2> 按值传参时:void myfun(CA ca);
+ B# W+ y( C* k) F0 Z
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-20 19:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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