鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 : z; _8 u6 g6 d( q% e
7 s' v3 E/ b/ j& e) h, \' U7 ]( O
class CA/ r- |" N  n# b, J( g* R
{" T- b+ l, d3 ]* ?
public:
1 X% Z$ L' r+ H        CA();
1 L0 r+ t7 c; f" M  ?0 |        CA(CA&);0 u# K0 n7 v! Z
        CA(int ,int );' `3 r. N3 H2 [) c) p  V
        ~CA();  h3 ?( v' L2 t* y# S
        void print();  I& }( P+ Q! ?) a4 [& I  |+ O

9 R0 J+ D7 D9 E) `8 n: D9 _private:7 t3 r' \5 _% s! h
        int i;
4 S& t! p* z- V) x" {9 R        int j;
  U7 \; j6 _6 ^7 ?};  l; k) w7 w6 `! T
: ]- I$ V& n6 G6 V$ r6 |& S" Y1 s6 S
CA::CA(); X! I$ T( b8 y6 s1 \! D) Z
{
; d& E* d% r% k$ ]: s}# S3 o% h) p+ J0 O
6 n+ Y) N3 }. t# f' l+ b/ x2 G, T# r
CA::CA(CA&one)
/ d" X1 w4 j* B1 L+ p# U1 |0 [{# j' R9 V9 c3 l8 A3 ~7 @: z) s6 h
        cout<<"调用复制构造函数"<<endl;
. y$ a# ~" ~6 l7 @* B3 g        this->i=one.i;  c5 K$ i+ f( k9 J: Z& V
        this->j=one.j;+ X4 `2 |4 u2 L( d3 [
}1 N+ M2 Q2 t/ N4 {
1 s2 Q$ x, g+ a, C9 A
CA::CA(int m,int n)* P0 t) r, q+ T" t$ Z/ B$ p
{
7 p) \; C8 [5 V        i=m;
5 E  J' R3 A# Z3 r0 {8 `        j=n;
4 m: A% O) ^. b}5 J# Z0 v+ \$ K* w. u% ~+ P2 ]

1 Y, H" p/ U2 o9 U/ cvoid CA::print()5 t1 p! _% V9 z5 S
{
3 s: |0 a+ P( l! ]: |, t' f        cout<<i<<endl<<j<<endl;
+ Y! ~7 c8 ~3 |9 H2 p}. G. P2 W) |2 H# `' `
# P' C, s# f2 x, q- U
CA::~CA()
8 K# G! O/ V/ `5 K; T' C" L{3 ?7 }' T) M; u
}/ O( i% L! m  R9 a3 D) s8 X

8 k0 _! c4 j% T#include <iostream>2 P" f- R: B& a
using namespace std;4 C! [2 ?' i" W' U' X. r
#include "复制构造函数工作原理.h"! W/ P+ V% L( i9 W
int main(void){        
2 ?6 ~0 B+ C4 jCA a(2,3);        9 D: O  b4 m0 F) S4 A
a.print();       ) S: _+ {; q9 c! G- z9 x. p
CA b(a);        
$ A, Y' s6 w! F' u. ]. q# _b.print();
5 V& d1 k$ y8 E$ }0 t1 ^1 R      
3 C4 O! D: I( R& n: g& ?6 k5 B( h return 0;* G9 Z: C+ C% z4 Y$ ]1 h
}1 n* K1 r" P( H; m. N8 j0 R0 V

- p$ ~2 Z/ y, p' R9 H% J( b- `
5 N, b1 d3 M, {( o/ X: ]: ^7 E2 y! u3 R" y9 q; M; T
+ ~* U4 d. Z7 }' d
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
4 G1 m; G% @' N" {. X4 y( c  o( y1> 初始赋值时:CA b = a;
. N5 p5 Z" N+ N# k  _# A9 A2> 按值传参时:void myfun(CA ca);9 }0 [' S. V# \' Z
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
0 u" Y- S) j, F) g2 U7 w复制构造函数在以下几种情况下调用:
- a; p+ N2 ^3 T3 ]* B: x( n1> 初始赋值时:CA b = a;
$ P9 Y# g* U& V. l, F$ t2> 按值传参时:void myfun(CA ca);
; f0 |/ Z3 d; j( N2 O( ?
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-5 17:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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