鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 8 D  D4 I$ O5 _$ S9 s
. H+ d; J1 D7 R. L: u. h& Y
class CA
3 N# P' z3 U1 x{
2 h& L. y/ `1 X% |: u9 Spublic:
& C7 e( n' Z. z. q        CA();
/ w" j. a# N' U% `1 r5 I# Z: k        CA(CA&);: ?" Q$ N4 X8 e: t- y
        CA(int ,int );
( b" r; B, p7 I        ~CA();$ I9 _& V+ f" p: x! Y# B
        void print();
5 I4 o4 `. X/ u9 E' ]& }7 x1 g4 R" n- E, X) @$ M$ ]$ x
private:: ?' N6 o4 M  `
        int i;2 c4 @$ f; F2 n4 e  _$ ], e( E
        int j;
& [# W9 }* R% t. c- s9 E2 N5 _! T};/ n! \) f* ^; Q6 k
0 n! R9 J7 X0 J% P
CA::CA()
/ M  ]3 s$ ^* K/ O8 D{0 K7 x- e# [/ S+ E* j+ @  G
}+ R9 `' w8 d- j; q, V$ P# }

* e2 f# [  i$ Y+ R/ V5 hCA::CA(CA&one)
) X: o, W  G2 f* l3 E0 `, Z, X{5 |" p4 i5 m% G$ v( M3 X
        cout<<"调用复制构造函数"<<endl;$ f5 f; s# @! r) a
        this->i=one.i;- ]/ [$ o: b( i: _1 c
        this->j=one.j;
* P9 H4 L" n. O% O. [}
. @8 Q; t( g. p1 \6 o% P$ F; @7 T9 e; J+ I. R; \$ G8 o
CA::CA(int m,int n)4 ~: Q% F9 b" m- P+ ]/ K* ^2 E
{* a# Q; c& @! F1 f7 L- J+ w
        i=m;/ \2 d# I' [1 H8 u" w" H0 I$ N. g
        j=n;/ Q& y. D3 }! y1 N
}
! e1 j+ t0 c% D1 Q1 x- F. w, g6 S& k/ {0 e; ?, ~- `
void CA::print()( d# L5 u$ Y, R1 M7 x
{+ B, K" k" F' F. G! x
        cout<<i<<endl<<j<<endl;  J  u" D+ s$ j& W! d
}/ M: ~" }$ _/ k/ v* ]. s% r# v

2 i  r) k5 ]* ?CA::~CA()9 r- N' i3 L) Z. M
{
5 h& H9 j9 g$ `' [5 V) c4 @& d}
( Q7 a4 C3 }3 X( D9 g( @) L5 y7 b% e  D7 o+ [8 J
#include <iostream>4 p9 M' u9 J6 d6 ]. d+ X
using namespace std;- B/ N0 q& T4 a) j8 }
#include "复制构造函数工作原理.h"7 B* [8 ~5 ]" v, V# L- @1 @
int main(void){          O& [0 p; Z+ C9 i/ D# k. V# r! K
CA a(2,3);        6 R$ N- M5 b: }6 B& y# l
a.print();       . V) q8 U) n& y& e$ x1 n5 l9 y# [+ f% u
CA b(a);        0 i$ a& ~4 q+ I( ^
b.print();: w) R4 q' z  L' A( F
      
' m1 @: Y; d' |' k8 q$ |0 M return 0;
9 K: g+ i0 m( b' U) ~! _}
# b" I% ~  |) M+ U. b% }: R$ q6 ?# G, U( C& P$ o/ M

! E$ m% ]( u! v$ m+ n3 R% O$ G( k
2 R  S! @: V/ s, B9 t
5 `1 h0 z7 k0 n6 ~" [+ O- N
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:# \: f9 U3 m/ a! T8 P' X4 I- k
1> 初始赋值时:CA b = a;
( g7 o$ Y- A4 n" r$ _2> 按值传参时:void myfun(CA ca);8 ?7 C5 q4 Y' v3 n3 S$ z
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
; O2 {. B1 [+ P' J4 }5 Z- m复制构造函数在以下几种情况下调用:( `) o. n' @8 S1 a. Y
1> 初始赋值时:CA b = a;% e8 r+ V' p$ G. E: I4 }% g+ S% [
2> 按值传参时:void myfun(CA ca);

& Q) Q5 @8 B& c" E第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-1 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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