鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
/ q1 H# F& W6 {# `+ c( b- A4 z8 f6 v; \/ b+ A, C0 N4 I
class CA
& f/ r" b9 z8 F; w, {# ~( s+ s{
! q! a* t, \8 x/ gpublic:% i# s8 o: h: N" w4 v# L2 f
        CA();: G' E/ r9 n, N* }& l; r, y
        CA(CA&);
: ^" K$ D% C5 ?$ X        CA(int ,int );2 W/ m2 {8 ^7 z* C; l
        ~CA();
2 `5 i6 z3 |- j1 u; E        void print();
) u+ I: U% H7 x5 u' N+ r
+ H! A' |$ X* }9 N' C% P' g$ D# Mprivate:9 f7 B0 @/ g0 V7 Q
        int i;) l: Y, m/ g4 O" p
        int j;
, Y5 m% O4 V3 w  [: L: m  ?};' A9 e6 D; u9 z6 h$ l/ s$ Q

" \* s0 w  v- u/ PCA::CA()# G  G$ g) T5 r- h
{* a( s. E' b( m+ K8 [
}
. d5 g" `, g# e% I- y! Q& K( o- f; P2 B$ \: B% t0 b! F$ m" _
CA::CA(CA&one)
4 a8 g+ R/ {/ H" @# T% ]3 ]3 [' z{5 C5 d) C7 B+ b: V
        cout<<"调用复制构造函数"<<endl;* A8 Z$ Y6 w+ A& \9 G, m7 f
        this->i=one.i;
; j1 R! d/ y; J$ K" y        this->j=one.j;
0 e1 @+ a5 {" G" g5 ?8 c}( m/ B# F1 y4 e0 v/ V
7 w  |8 ~- m/ X& f( l- k
CA::CA(int m,int n)
% ?, {1 `! o- G2 o3 A* @{
* |, ?1 J3 i+ b        i=m;
  z: b5 u# j; v6 W        j=n;
# g2 j4 @4 G  p}: [! r( z3 s6 V7 _) Q3 f$ ~. N3 v8 i
# l, f; a- c5 {! |8 g/ z) b
void CA::print()  l* [) o! ]- b: V1 C
{: [( U" f) U( {$ _
        cout<<i<<endl<<j<<endl;
: E" V/ L6 x) P) V" c6 Q) {9 c}* L* m7 ?3 Q9 W0 z
5 x7 \  y4 D0 u2 {! Q  S6 ]
CA::~CA()/ z& r' i0 W7 S) I- W# i  r
{
! I+ Y6 ?4 f, d1 E5 e# i}
6 J  }. c& V  B" q( O
* M. M- t2 @# ?7 q#include <iostream>5 n% J+ J3 _* x6 r% z% m
using namespace std;& u2 v4 X3 q* x7 F
#include "复制构造函数工作原理.h"8 |- P3 `8 @* v$ D
int main(void){        3 d" C8 t$ \$ ^2 A+ H) p3 P9 v
CA a(2,3);        * ^+ l* ~2 |% j4 r; K' h$ v
a.print();       4 K2 o8 u; Z& W5 R! Q9 T* y
CA b(a);        
8 y6 A$ i8 y; i' e8 r3 P9 U/ Z  R, i" Vb.print();+ |2 C) W. V0 M! p, P( K! y8 i1 u
       - `+ I) \" ?1 \+ I  O
return 0;0 Y  F$ a& e( i3 Z4 q
}+ A% B. X/ r1 x# @6 K8 I

, L/ B7 a  X& X
, S5 `; p% A! D* G: H- j5 `7 U$ A& E# P3 b9 R
5 `' m$ z+ u: n2 Q! t8 O3 B5 ?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:% l" p' Z: N8 t
1> 初始赋值时:CA b = a;
. x# ~. n: ^! g! o& y0 J* I* x2> 按值传参时:void myfun(CA ca);
' a) D+ h; _% O( x( b1 ~3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 9 _# ^# P" @  c7 N9 s
复制构造函数在以下几种情况下调用:
, B1 o2 p7 s4 m' y1> 初始赋值时:CA b = a;- V4 ?/ P% L  t& Q1 o7 a
2> 按值传参时:void myfun(CA ca);

4 \- q: p$ [  a$ Y第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-10 12:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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