鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( y( n' p% e2 V6 L7 u% l/ H4 c7 ^$ S8 g  ?! o; ~
class CA4 r; U* M7 ?6 Y! p. a; K( L, r
{
9 V- Q0 }2 O7 }$ X/ J9 L" T- tpublic:- ]0 z9 Q+ E% L1 ]  |
        CA();
4 y8 b" U2 Z3 b/ z" ^, _2 `        CA(CA&);  l' u+ e! C" ?
        CA(int ,int );
0 x' O0 T$ S$ A& }        ~CA();
+ N3 I) y* }0 _$ O        void print();! R( ^1 x) r2 Q) Z
. p; J) g5 T+ z; G% h
private:
/ P% n+ g1 w  W4 _: Z( _        int i;
, p7 \# F3 u0 R0 o; a# v7 U8 r0 K        int j;# ^6 O) V5 D  p9 w# |8 Z6 ]
};
6 J- a* C! U% x( A2 c5 ~( S
: t" x( N: ^; ~" CCA::CA()! ]# Q9 R( N& h; e; F, j
{
/ `+ g& a/ ~  W5 N& k8 a/ {}
: \: r: u) N+ |7 `5 Z8 U% Z$ _0 h( w4 H
CA::CA(CA&one)( L7 L) T" \* E( a8 K/ P
{
* o% o" y; u( G3 ~! s% V0 O        cout<<"调用复制构造函数"<<endl;
5 O3 _! ]# k6 j/ ]$ P% I5 Q        this->i=one.i;
6 Z0 _% B% [, o: J: X        this->j=one.j;- V2 c( S# ^  N( E
}
3 t0 M* N! ~8 {4 o5 j% \7 N/ ~" t/ T7 c% o% N
CA::CA(int m,int n)
1 D+ E4 S# v* a6 c/ m$ `{
( H# p8 Y9 a' ]  L        i=m;* p- S: B" y/ \1 }& q7 G" K5 Z
        j=n;
/ B3 H$ B7 O. S3 k1 w( _}
  ?+ Q+ k+ V! ?2 I5 J0 }% D: Z: N8 l; l4 z) P5 J7 H0 s1 \
void CA::print()
% u5 K9 Z* @; C+ @  b9 V* G/ }2 I{5 Z8 c9 q: s/ e2 {
        cout<<i<<endl<<j<<endl;
" W4 b* X* h7 y2 O5 l$ R" m}
4 ?' x6 X/ o0 J* g$ M7 F2 ]8 s' W1 L9 m4 p' Y' u
CA::~CA()# C% I$ d9 ^& X" @+ m4 |, E
{
. g2 G( {2 V) E" m$ K8 Q}" y0 c/ Y& f3 k! ^, z& @! J

. d* H9 d, B: q- P: ~#include <iostream>. h3 r8 l& D! ~# T3 V6 c2 h3 O
using namespace std;
. Y. ?( g  p4 `9 q% d8 m#include "复制构造函数工作原理.h"0 Q# Z" ]: z; n1 i( V3 y+ s) N6 j
int main(void){        6 w: E4 O7 r; K
CA a(2,3);        
( h3 F% V& Q/ I0 B8 C2 P( W& Za.print();       ; m$ C3 W+ {# ^+ k% j' B& S
CA b(a);        
  ~& w8 h: ~6 X) V3 F1 V' cb.print();
+ B; r* k6 E$ O% q( E      
8 S, f0 a. {* g# y& ~0 S return 0;. a1 a, t( d& X9 m+ y% C" O
}
; ~  k* B# E, }+ D8 p
) q; D* J$ u/ {8 ^
" i, Q, V6 l- Z$ B3 ]( Q
* u! n, R, n+ I+ v2 H8 u
7 O1 s4 m( o# k' x& g
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:. L" T, K* }' U! b
1> 初始赋值时:CA b = a;
$ I2 W* Q& N) W9 V. C; h- I5 T; p* I2> 按值传参时:void myfun(CA ca);
; E5 M0 {  U: S" Y( o  y3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
) [9 H4 J$ T9 n* E7 U- K复制构造函数在以下几种情况下调用:2 ]2 c% Y! v; H
1> 初始赋值时:CA b = a;
# _# L2 S( \- o9 h' G9 s' `2 ~- h( l2> 按值传参时:void myfun(CA ca);
4 u" N5 q  s7 M9 ~8 |4 ^: B) b
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-21 20:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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