鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( L* Y% [; E* |
  A7 `# u. H- {2 sclass CA
2 J) y' v8 K$ ~* Z{1 d# U; s7 u$ N
public:- T; E1 o+ t# ~+ P" g
        CA();
0 o# k8 y: J! D) c        CA(CA&);* O8 U5 M5 g2 N& f) r/ M
        CA(int ,int );
7 E* L+ a6 x! F6 ^4 G1 n        ~CA();
+ j4 H# T. m, Q1 F7 s        void print();
" w$ c2 E( @: h$ N$ f
2 G, X" m$ w7 W& pprivate:
, H7 _2 N9 Q) S. w/ ?        int i;
/ Q$ ]! T$ m  z' T        int j;/ R( @+ ]$ T! l  A
};
% q. [. `# P. C7 B* T) d& [; ~# P
CA::CA()
3 e  `0 ]/ w5 e4 m4 p{
1 ~# ~: Z+ N4 O1 ~; Y}& H9 h! f  _* F) @

+ }. i, y; u- e: `CA::CA(CA&one)
, ?3 P- d, r: L2 t/ O. x{
" J' h! @. W. B% C2 U' ^9 @# C' j        cout<<"调用复制构造函数"<<endl;
2 H" x  U" }# S' ~        this->i=one.i;5 A. O; ]' Z3 K
        this->j=one.j;3 m7 n1 e% w; j& S$ I
}
' [4 @$ m+ K  f1 T3 E' V9 D6 g8 z+ E' h0 C
CA::CA(int m,int n)( ]2 z" n; r2 U6 o. I9 W, ^% l
{
: x' \+ _* n& L5 o0 ^        i=m;
; Y$ m, m7 B# ~+ @        j=n;  ?% G9 ~: U; \4 M* i/ _
}
! w: E: z* G. \" L! \+ T! e" H8 D; a7 Z
void CA::print()
) U# e8 L6 S3 }+ e! v+ x6 H6 |4 c{
+ r4 {9 C8 x3 C2 l" Q- ^2 e        cout<<i<<endl<<j<<endl;
0 A* m3 l( T; G- Z; H' g* X0 [}7 j+ o: u2 V+ K
+ L. |" O- W' `7 V: [' M  N8 o
CA::~CA()3 j8 Q/ e* v# o1 @2 {6 D& ^
{' y4 [7 x1 y" W+ |+ e
}
3 c1 }! D8 O' m1 j8 o! ^
) i6 k. {* ^& O5 b, c#include <iostream>9 v. i1 {2 i* @9 W
using namespace std;
( O0 D/ \6 W7 E' h; @7 b#include "复制构造函数工作原理.h"
& c0 w7 ~* N2 j' i& ?int main(void){        5 i; S1 [" G! a& z8 C8 u# N
CA a(2,3);        
7 L0 L( w) |) v  F% E: ga.print();       * a0 K5 g- O" Q5 T' m8 Y; |% A
CA b(a);          j) X0 d8 D% r9 d1 V" ^) S- N
b.print();
8 g' W- y: V9 \       2 [$ \/ v0 b  y8 T0 `: X- G
return 0;
3 t; t: B: U8 M5 ~}& `+ ]9 ^. x' }/ x7 f' H

9 l( p0 Y+ I/ r/ c, {' E, L* Z9 w4 g0 C& }( [. E

+ _! q9 x! D0 r- n
1 w6 I* k6 N2 i& O
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:" {" S- y: L0 |: W7 M' ^% U
1> 初始赋值时:CA b = a;& P- ^% L9 R+ A/ {: B  G* ^3 S+ G) J
2> 按值传参时:void myfun(CA ca);
9 R* ~" U1 `  w: ~& H3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ; Q* {# M* O; U
复制构造函数在以下几种情况下调用:0 {8 N3 l8 L  u' b7 L* q% p
1> 初始赋值时:CA b = a;% D" Q% E8 d4 h& i# p1 H9 `' K
2> 按值传参时:void myfun(CA ca);

( i+ Q) g! d+ w! f5 @第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-22 14:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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