鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
6 q% m+ @5 d# m# ~% y6 K1 O0 Q  |4 Y* a& R& K8 H  [
class CA
2 I8 d' g5 y4 q4 \* M. `{1 i7 S7 m. \) X" C1 [
public:
& S8 A) I. n! y( Q" A2 W        CA();4 L  V: d5 }$ s; D, t
        CA(CA&);2 H* h* U; B5 }. l
        CA(int ,int );
9 W. k9 R3 F% N9 v3 c# }% }) Y        ~CA();
2 Q+ G0 N; z$ H        void print();2 L5 k" M& i0 U" }9 H4 Q5 {
8 Y( h7 R  R) x* Z: |  R8 Q! \$ Y
private:6 _2 E1 O" g, q3 u9 K3 Y8 S: U9 [
        int i;
6 `8 I6 _5 R! ]" L! W! o% ^0 w        int j;
3 s. Z, r8 N& s* Y- m+ e" Z, _};
' w; O+ @' N& |* {$ c" o; z# g4 t
CA::CA()6 J9 s- V; g0 O: r( Y5 F. f7 U
{
' o0 f; H, G# k0 V}$ C% y) b3 a& Y1 \) c

; ~0 a6 }6 d) b& m8 t2 hCA::CA(CA&one)/ {: a: f" l: v6 o% w2 s% R% V
{
( \0 q# W3 i) B% z% V        cout<<"调用复制构造函数"<<endl;% K2 Q* O2 K( S) H9 e
        this->i=one.i;
, P! |+ J; H2 r        this->j=one.j;( R- Y* @' E+ Z
}
3 d7 ~8 f3 q# U0 G& v- M% ?8 M4 E3 i. i9 z0 n8 X# l' I
CA::CA(int m,int n), L" T# `/ ~/ ^: W! r: N" P! b
{% ]3 L1 V  P. u) u) A
        i=m;+ v: C+ u2 K' H0 u5 H0 u+ M
        j=n;; F3 a0 [# i( G# K& v" L
}9 M) k; `4 Z7 f6 |2 T
9 V4 {" Q; L% Y& M1 `0 q0 a
void CA::print()
, N! L2 ^( m1 d/ Z9 B; M( p{: ?4 o+ k) q! }" Y! D6 s
        cout<<i<<endl<<j<<endl;
+ g  L. Z, L8 U- [# a# i' \}  I" A- n/ P+ O( P' }" O$ {( l2 z
  T0 m% x% i0 q0 ^7 m8 s
CA::~CA()) }/ ]/ ]& |, Y
{
. ]( ]/ m0 R) ^8 @, @}
. z8 B" t- \; }8 s' v( s3 Y* q8 t$ M$ v: R
#include <iostream>
& b, V4 [) d( y3 Yusing namespace std;& {" D7 \" H! G% n) z5 w
#include "复制构造函数工作原理.h"
# u5 O9 E: }/ Q% I9 |. M2 X. ~" {int main(void){        
  E- X8 {( q  J9 _2 yCA a(2,3);        9 E$ o4 x* C+ {
a.print();      
+ q: j% \4 C8 Q# }) { CA b(a);        - G" h1 |" l5 k' L9 m- M3 D# R
b.print();
. h# k9 |" x& r' R: L5 b       ' X/ z; F# K4 q8 j; _2 _
return 0;$ }0 r9 z5 M* B2 {8 v( O
}7 l/ I/ g! A4 W# D

& r* N: s1 A' n; Q. `3 B( f1 o' Q/ f& Z; [4 Q- ]8 `

  z6 f% H1 t, [" g. C) e6 s
2 @. c+ I! g# Q/ N" m* H$ s: T
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:7 R4 e/ f4 d+ [. N
1> 初始赋值时:CA b = a;3 `; }, d6 Q0 C3 m9 x. S9 j" H8 T! l( b
2> 按值传参时:void myfun(CA ca);' `2 v: J: f; q; D  ?
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

9 f: \! h2 ]5 b9 B  ]6 M第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-15 09:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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