鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 5 Y7 Q+ W4 A; S" ~# n

& H0 J& v6 p8 ?9 A& F9 l1 Fclass CA
- q% U8 n; O' T7 ~{  n! _  v( l! M7 }8 \8 k/ B0 A
public:
" \" i7 J* q. V+ ^        CA();1 Q9 [! ?1 z# f! I4 y
        CA(CA&);
! Y: N7 L6 v6 U2 p* _        CA(int ,int );' {- X4 ], S  C. P% \6 q
        ~CA();
5 C9 ?/ j7 @* F        void print();
4 @7 Y! _7 Y- E7 |0 r/ q) A& E# u$ U$ q; k$ }
private:
+ q" k* p4 v; [        int i;
& r8 o' f$ x3 N3 \7 Q1 U0 h5 y/ ^: K" F* x        int j;7 e: h5 Y: `4 V( c+ J) V9 w& a
};
. W* D) o' Q8 J$ |, ]. \& Q- a6 t. H
CA::CA()3 W8 B# H3 U3 U6 w3 `
{
: D4 a$ I! }4 w" |}- v8 Z& b: \9 W! M

/ b# U& Z' F" k( x4 p" F' kCA::CA(CA&one)0 v9 P4 M3 w6 @* O3 k  X5 n
{
- q. L$ P* @; A( M* z6 h        cout<<"调用复制构造函数"<<endl;
9 S7 |# `2 ^3 q% `( }- i  F8 c6 h        this->i=one.i;$ X/ o0 N1 V" ?( z, A7 U
        this->j=one.j;
, ]2 w: ]; w# I  k}
, w* y: Q# c1 _0 ~3 o; l& C9 y  H, t
3 H: ~  Q) f3 bCA::CA(int m,int n)4 n- A' ^+ w# ^/ I/ ^
{. w+ U! r6 S8 f8 F6 W( {
        i=m;
0 T4 K( ]5 ~% i' C        j=n;
3 h$ @% t4 D7 J2 k5 W2 h0 W# X}" P9 V. l% P+ [' Z* R
  i/ D* B8 p- b. [
void CA::print()8 x# @1 }1 R# M# d6 H+ p- M( r
{
, J; v! f* R& k" f7 \* q8 M% h        cout<<i<<endl<<j<<endl;
, x! U# Z% ~6 W5 C}2 N$ T3 q" v  T3 G/ |+ U

6 @6 G$ t- |+ t2 uCA::~CA()
: h* T9 s6 t7 R9 {{
* F4 j5 _6 S" \* b7 }1 g+ i8 D}$ _/ i, E/ _; J$ B
6 I3 N+ k5 q) k  I1 S
#include <iostream>
; V! p/ U3 c' qusing namespace std;' Y9 v5 d8 s7 ?) ]
#include "复制构造函数工作原理.h": U, J5 F' N) I  l
int main(void){        
( \. t8 k/ b0 w8 T0 ]8 QCA a(2,3);        2 f8 }0 e1 f2 y" V! U4 g
a.print();       / L! J# L0 X+ L: F6 ^
CA b(a);        
  `& w1 C# v+ U# D( ~. `/ @$ yb.print();! K3 U% b: Y2 L! _
      
9 u3 {# T$ J2 B' Z return 0;
% ^) ^8 Q  Y  b' h4 m$ R: |}% p# R) F5 ], O( S

' [, I" _0 B" }4 H" y, z! r. f, d; _
3 ^1 k1 S) q$ x0 a" A- O6 D
+ e. s3 N; X1 z* J
7 \  A( w% O, z2 g: Z9 U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* h' `! I- i( L/ e1> 初始赋值时:CA b = a;
% F* T0 b8 {, z- ^2> 按值传参时:void myfun(CA ca);! j4 D/ ?: b2 T9 p; f
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
6 z! Y9 r( L9 O4 p" H复制构造函数在以下几种情况下调用:
7 C6 y  N" `/ a" F3 F  T1> 初始赋值时:CA b = a;: c/ r/ }! O2 L* h: A& @
2> 按值传参时:void myfun(CA ca);
4 I1 o7 ?, W5 w6 o
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-1 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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