鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 1 f: ^0 o" {/ q$ O% ^, q# ?

/ ~. E1 U; \% Uclass CA
  N0 q3 f7 y- o+ A& w{# u1 b5 T4 G0 N* d
public:4 k( u& n& i5 k$ y, i1 ~" G
        CA();' }- D# D, \; n9 ]* }
        CA(CA&);7 @: C, r% a5 v& N5 Z
        CA(int ,int );
& n5 |/ @' O6 l9 c        ~CA();
0 Z& a- v8 N# H3 v3 `        void print();
2 Y. V! {& h* d5 I$ N: T% _  a- c* e; ]) a6 H& E  l2 l
private:
1 a: \" c5 S( w        int i;
- F; ~7 t; p) T; J" V& c        int j;
/ L$ c$ s- r4 ?) D$ V};
: C4 e) A' ^  P1 Q
! [7 o( z4 h: ~CA::CA()7 G( p$ \# `3 j! V
{' t, t. X  s* t
}( G- d; s( K, C* g: u) _- h9 C- c

9 e/ z; ]' z- [; hCA::CA(CA&one)+ l/ \( r+ {* D' u4 u2 N/ [
{) o. H% Z- D5 ]# N' q% b
        cout<<"调用复制构造函数"<<endl;0 M7 g, ~7 @1 F# r) D# Q- b9 K$ h
        this->i=one.i;
, z* F! e3 U4 I( ]) k        this->j=one.j;& j. f5 \* d. }+ S
}
! p& b1 E' e6 @% y4 a0 V6 j4 R
CA::CA(int m,int n). z- Z6 `, u* B% r; y9 T4 Q" o
{
$ ]& b8 e1 d- |) |  K4 F- e        i=m;* p5 W# F2 ^! Z4 Z. Y0 w1 @
        j=n;
! A- _% ~# T3 k6 r# A2 v}# w. i1 f0 Q% u" P9 ?
: o6 j  [1 @* \/ l  G
void CA::print()$ X! ]+ u# H5 S; Q& S
{
+ R* N5 G, {# m+ K' x        cout<<i<<endl<<j<<endl;
0 y; h6 J  K0 A  R1 o' w}
9 p; q7 W" X* l' V: C6 ]# `9 g3 c* _
CA::~CA()
: c' e  a' u. I1 n{
4 K$ c& c: u5 X) f) m}
  F- Y/ y! h' W$ h
4 H$ ]* |$ ]; [+ {/ Y/ U#include <iostream>0 R& Q1 `: Q; J
using namespace std;
" h) O# l) p% O  r* I# b) V#include "复制构造函数工作原理.h"( }" R4 ^3 ^/ r" X* V* V. {
int main(void){        3 @( w, K" {7 q6 T- ?9 g
CA a(2,3);        4 [0 e3 S- E; Z; i
a.print();       ; X3 f8 h5 Z* v
CA b(a);        7 x' `/ \/ Q8 R  _# j
b.print();2 T4 p& W0 W. O* m0 D
       * ~( d" t& C, H9 ?/ @3 l" A
return 0;+ R) p7 m/ {; ~( M4 d5 K
}
1 f; p) c0 q0 t/ j/ Z% o1 h" \2 g* q; o* u
9 B( P" L, y& m, i
0 s! W$ N; q% [! h/ Z2 W

: \2 P/ V0 h' }# w3 @: }. ]/ ?# T
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:  `4 i) u6 R. V5 X
1> 初始赋值时:CA b = a;( m' @% I# O; ^8 Z$ P, r) u
2> 按值传参时:void myfun(CA ca);
; h" i) i* E% d: S3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
  J# J0 l% j+ }7 w' M# X6 D  \. u( p复制构造函数在以下几种情况下调用:% W; X- B. b- I( g
1> 初始赋值时:CA b = a;* F( w7 k3 W4 d/ H7 W+ a
2> 按值传参时:void myfun(CA ca);

( p& x/ A2 \! X5 s2 N. i8 i第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-14 12:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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