鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
+ P% b4 ~* W: D/ g
, `) u& b& L* Z6 T" j$ A2 i- ~# E  kclass CA  ?& F7 S) C  T+ e1 }5 Q% x( N; q
{
0 P2 c- n+ j. Y" spublic:4 r+ y, E& K4 W% ?' o, P) Y0 A) o
        CA();
/ n( ?& ?2 b) v9 o        CA(CA&);1 k( R( b' K1 i* E
        CA(int ,int );: P( A% W9 @* }
        ~CA();
  L+ o3 Z0 G) Y' h' v8 w8 W8 I4 |        void print();9 O* q" ]. B% o, D: W+ X" w9 ?

* ~0 Z2 i7 o8 o4 ]" Pprivate:: x' E  i7 {) y. X+ s
        int i;. t$ k2 A' t6 z( {9 _! p
        int j;1 m8 O4 x; \, R6 c, @: ]4 y
};
( s+ Q' k8 G" W0 _% ~' v1 B) z6 x8 b, f+ [8 q$ _
CA::CA()7 t' z7 Q4 d, x/ k/ C  g% E
{* F9 j3 r: [/ X9 H
}
% N- h% Z7 I2 c1 n% _; m% S1 @; M4 g& f
CA::CA(CA&one)% B5 B1 {5 Q- Z  Q
{
2 c3 E' z7 u) v# i, U9 G        cout<<"调用复制构造函数"<<endl;% A' k, z! R. S6 m
        this->i=one.i;9 e  Q- x6 C! O& ?- X# ?
        this->j=one.j;
5 ~$ F8 o- M$ F6 k) o+ n}
% x5 b6 k% W, v& e8 m2 k& e: q- }/ R3 x( e
CA::CA(int m,int n)% P. a8 n! Y: D+ J) {8 b7 A& M% z
{6 y; X) @1 V8 k. F9 @2 Y) l* G
        i=m;
# r1 v4 \8 |  q5 q$ W/ ~        j=n;4 @# H5 }% l6 M$ A& D
}
1 {0 b" \6 J+ _* ?% R. E+ |5 ?$ x0 a$ x  b0 I+ j& J2 H; I
void CA::print()
! C+ r- Y; I" O% o1 ]7 {{
) N  {3 d8 A, b6 t( m        cout<<i<<endl<<j<<endl;
1 y+ ~) D  o! k% O& D}3 s8 B; P2 r! ^8 t) @  ^

: |  W: \& e; b$ Z9 o8 ]CA::~CA()" R8 \3 S4 q) B
{" e7 R4 ?5 K$ L, {$ z1 }
}
/ v. E% f+ `; [" J+ K- W  k% l& L' ~% ~' f
#include <iostream>
/ J- q* m2 N9 N2 Fusing namespace std;
) w6 b' W6 K/ F#include "复制构造函数工作原理.h"
  q4 r: F, X& W1 g/ o" w3 k' a# fint main(void){        0 P) Z: z. t4 A3 M, u; l! Z
CA a(2,3);        + a8 ?7 D1 \+ y) H
a.print();      
  x" D( O4 n& y1 M+ a0 V7 _! C CA b(a);        / i$ h. s- ~& B( P
b.print();
' v. \3 W. o1 ~       1 e/ ?1 Q$ ?. {: ?) L8 U* s+ w
return 0;
3 \5 P6 F1 X# [( @% c8 I}
2 W) F' L. V  {" V: a# F& [+ ^% S5 u5 ~  j9 T0 R6 s
% X" m+ B) a/ A4 u# O; z0 P
1 z+ o% v+ C' r, ?" Z5 _

! x( P* z/ ^/ y5 ]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
/ D% T! ?% x7 W: u: t9 d1> 初始赋值时:CA b = a;. _, n1 a, Y6 X/ K5 ?
2> 按值传参时:void myfun(CA ca);
! T- H! N0 K4 O# Q, |% C3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 6 i0 ^2 n, V3 X, K) E
复制构造函数在以下几种情况下调用:+ ^- D$ S! ]$ S& ^& r) J
1> 初始赋值时:CA b = a;/ {& e# l  d" k# A0 U8 O( ^
2> 按值传参时:void myfun(CA ca);

& l  s! V$ `) {" ]第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-6 08:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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