鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 & I1 L+ g& [) O  ~
: V! }: M5 p0 d8 I8 u) x! z2 s
class CA+ {+ `+ u; ~! U1 Y8 j4 {
{4 D& b$ i9 C6 {! D7 I, g  u/ D5 Y4 \
public:
" r/ H- b1 a( R: X  z8 a        CA();
3 F7 v; M- j" X9 X8 t6 F        CA(CA&);5 M+ j) o# E+ `! [, A9 |2 ?
        CA(int ,int );' E6 f, r" ?5 E5 t9 [) S! Y( M
        ~CA();" }* I" \& X( w1 e  x. R. \6 C: {# y. r
        void print();4 d7 U9 t! o+ Y$ X# I
6 [3 M4 m; _' s9 ~
private:2 h- z' o/ v6 S( Z3 \0 u) i
        int i;: l  ~% E9 S1 P" ^, A2 e* D
        int j;3 C, `9 V/ a) v3 X
};  {  w) U2 `$ A: a" c  z0 V* Y
0 c9 D% y3 K0 C" v9 a; m. S% I  Q# T! o
CA::CA()
: Y& z; u2 K/ e! G{
$ i( c) l; X1 j0 }9 x0 P0 n1 n/ W2 J}
+ t+ j( M& ?0 Z$ n  K
! {1 K2 U  h! L9 n* n- [4 B$ LCA::CA(CA&one)( v; [; N+ U7 D
{, I7 m2 L2 X8 O9 s
        cout<<"调用复制构造函数"<<endl;. |% m; K- l% g0 k+ U* L9 i9 e. {- t( M
        this->i=one.i;7 I" ]5 H& d/ i. o1 u+ Y
        this->j=one.j;& Q( ~; v$ U2 _
}
0 @: p  v0 E) @% i
- ~8 E  @( F6 a0 U3 bCA::CA(int m,int n)
+ F  V  o9 }4 K2 d{
8 a5 O5 R+ f4 S8 T# E$ m        i=m;
. |* G( E, W% c        j=n;2 U7 m) m. L; ~- T& S  k. d; G
}, e' b7 P& [4 |% G2 P- [

9 C+ }) @% O4 Y5 G" O- O/ m+ @void CA::print()
( q. R- A% T- M% y  U2 @{( l5 v# }2 }" [
        cout<<i<<endl<<j<<endl;
0 Y- p* m: @- D% D; r}
( T  \0 a3 D  e1 }9 m# [) P' l& z1 o
8 ^0 q1 l1 {  C3 _CA::~CA()
+ A7 Z) ^% G* o  d; S{
( h  F1 b9 k+ ~- g) f}1 y6 J8 i( F( W. m! i0 S* R
* E( O: o9 U; D1 D/ e7 i. R* l# I# L
#include <iostream>/ p- w- e9 p, k, B1 ^
using namespace std;
. i! Y/ m7 c' d+ Z! x#include "复制构造函数工作原理.h"( F: i& c  N8 S6 h/ p4 J# h( P$ b
int main(void){        
  h8 w- c+ {; f! T) p" A, n0 xCA a(2,3);        
- l+ S* A8 B. N9 Y( la.print();      
% G& c; z' z: Z CA b(a);        
9 N( C% v. V1 z& @" u: ^b.print();
7 D# ]: X0 p- w4 p6 ~0 G7 k      
# }4 @. H5 C7 g2 n5 ^ return 0;' y: `8 a9 }# w4 j0 K2 y
}3 E  S! S0 w9 y4 q6 Z$ j

" D- a1 Q1 H, Y4 `; e" K  g$ K% A! p* e8 E" ]
. i  [6 Q2 d6 Q2 I! [
) I" Z2 F* A  y; l; A6 S! q
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:) x6 M8 ]! L# c5 A9 Z2 a2 D0 w) O5 s: E
1> 初始赋值时:CA b = a;
  {' j9 s/ Y* A' |2> 按值传参时:void myfun(CA ca);
. H& D5 O7 E2 l4 O* t# L# S3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
! Y; S  S: m$ p- T1 W
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-20 06:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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