鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
/ u2 A' p, d4 @4 d( H
7 X; w3 ~" [% r! x2 h; Hclass CA+ k5 e- b  q' t! R, T$ p' j1 J4 W/ z" R
{
% Y" m3 `" ^, V4 x/ Ppublic:2 c  f) Z- B! v4 C
        CA();
; O+ g$ a# x$ [  g        CA(CA&);
# p; Q6 Z, c5 N- I0 H; m        CA(int ,int );
* h; I9 o% N  e5 L& ]# H/ X        ~CA();
/ E5 L( v1 K& U3 \, I2 r  w# ?        void print();
2 M( o0 i% m7 [& L: ?0 e: `7 b- K0 T- a; i
private:
* A# G: c1 r! g8 n# ~2 W# I3 C" `        int i;
$ ]! G7 q' \0 _8 u8 F        int j;
! J# E+ a4 i0 \};
7 ~+ S7 t- h5 [
' `9 [. _4 a; w# z. g' q6 {; n2 XCA::CA()
; K3 i9 R/ k* j1 x0 t{
0 t6 q4 K/ i* V6 S}& z0 h( q* @- k( H2 K- u3 \, y
1 ?- y% Z0 j$ d# @3 ]$ u7 o: j  ]) B
CA::CA(CA&one)' Y8 M; n3 ~2 @
{
" K- @2 w  z4 }  i; r        cout<<"调用复制构造函数"<<endl;9 o5 P5 \8 U2 N! d8 n4 i# G. _; T4 ~
        this->i=one.i;
$ L, M7 ~% A/ u8 R8 b. o        this->j=one.j;
( C) ^/ i  i- T( E}
, r5 L% I( ?& U# I$ f: D$ d# z$ Z' b& r7 z1 X# j6 P4 Z
CA::CA(int m,int n)0 a  C# ^; E' p) f; [9 T# H1 ?
{
4 Z( H# |3 ~, z        i=m;
  Y7 `/ U# @  `- v/ T; S& Z        j=n;
& h1 Z# T# N4 i& v" e0 f}
# m+ o$ B" I0 B# ~$ |  X4 l4 L6 {# [# F& t) D
void CA::print()* [" ^! _  r, ^% M; }- D' b. p
{
5 n' g. V2 C4 f5 n        cout<<i<<endl<<j<<endl;
* ]9 I; X; w8 {( I" C) m}+ Z8 y% y+ P3 C
+ g( Z. d7 S/ _0 l( c7 ~
CA::~CA()
+ V9 P. S1 }. k5 j3 a{
6 t* J. M$ s; ?. I8 \8 u* z}7 X9 j+ a. `: f1 q

$ i8 l' e; d! h8 ]. B8 p#include <iostream>
- R: |" y" P$ U7 n2 _( husing namespace std;
2 |; x% G  H$ j& n#include "复制构造函数工作原理.h"9 d+ @" N2 y" s) }2 u; G1 |3 f
int main(void){        
  h/ q0 {+ \3 {CA a(2,3);        ( Z; a9 S+ Y0 F+ ]% ~
a.print();       / Q3 S5 T! [" O, \6 B8 z! \
CA b(a);        
7 E. w$ x0 j+ R5 s" _" X/ Q; kb.print();) l+ Y7 K. ^- C* g8 I
      
3 P  L9 C" b8 j% } return 0;2 t" ^% J' H) S* p' c2 H
}
& s( Z9 a: J" U( j0 C+ S
) @0 k6 M% M' V0 @5 a
, m' }# p$ F# C' E6 g  `' e. j' Q; ~4 p3 T" R$ n% F" b
, n2 R8 I+ T% H2 U) \
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
* i# [& T% Y( I# v7 o3 @1> 初始赋值时:CA b = a;4 d% G* {8 Q# H& e
2> 按值传参时:void myfun(CA ca);3 Z& m! @0 j5 i! L& {5 d
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
% X  l5 u& B6 u5 C  |4 ~复制构造函数在以下几种情况下调用:
1 X1 R, R1 t4 q) r" U1> 初始赋值时:CA b = a;
( Q" M3 F! w* k$ }9 M+ d  T2> 按值传参时:void myfun(CA ca);

9 u) y7 P0 l9 L$ Y第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-6-28 12:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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