鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
. K! X; F" ^* i, v5 @5 n+ k+ A; j- P+ x' K
class CA
& V) v; l# V* C' L& S& @" a7 `{+ e) v+ [3 k1 I" M( J
public:
" r- M. d6 P3 H        CA();
3 B/ j3 Z0 U& w9 t! f" M- @        CA(CA&);8 o9 V0 E) [% _5 {- K& ^8 x
        CA(int ,int );7 M% e! F0 m/ ^0 t1 _
        ~CA();# r9 i# w# d# W% y" Q8 w
        void print();# i1 }: K, ~4 f* \" }4 n2 Y% e
! C7 @  K# b) e8 w( `6 e
private:( s! D; g  T7 r. g5 [$ l& q0 R2 K
        int i;
6 w& M/ E& ]+ ?1 q        int j;
$ v, a' j. R! j4 G" ?% I7 ]# b/ S};
  r, e6 K- ?7 |- s7 I; i8 |+ Z9 p8 T0 m. ^
CA::CA()4 x/ }: |/ q+ S: p
{; v! F$ N# d; P3 ^/ X
}% Z6 j1 j* Y  n$ q8 c

) D, u- X( N8 e5 V4 iCA::CA(CA&one): b' m* N/ @* E6 I# @- R
{# L4 [+ }- V% G: x9 }, F* _' R
        cout<<"调用复制构造函数"<<endl;
  Z+ ~: W8 b' x$ p        this->i=one.i;
1 _8 r8 C2 F: U: K, S- Z        this->j=one.j;
& t2 R) R# W! U" ?4 b7 N}
$ k% ~; |/ r  V1 X5 X$ d) C8 j5 K2 J2 h* U+ _6 O  c
CA::CA(int m,int n)' }2 r3 L' `/ |- W/ z$ y
{
; N; D& l' c: J- r0 j2 i        i=m;' l1 s% ~. M, d: C$ K& [5 [) P
        j=n;
: e" j+ @! h' D5 C7 j: t6 e) o' l, W, Z$ f}1 m8 ?5 M" j; A9 U/ K% G

' I9 ~/ q/ W. C4 R# C! \void CA::print(): C) a/ u# T5 i' |$ `) W+ B
{
4 Y3 g& z8 U5 J& {        cout<<i<<endl<<j<<endl;
! O% j# {8 C- ?% f0 e}
9 q' y+ p. N2 X7 i( N9 n; ?/ L0 d% S6 X- w
CA::~CA()
/ T8 u( ]/ o$ T5 k3 [{
: g0 ~/ l6 J4 p9 r}0 k0 o- d" F" m$ n4 q; W' h
! J" s* M& a' b3 T, o# q5 R
#include <iostream>
+ ^3 o; I2 y. eusing namespace std;
5 X" {; h2 h4 H) P& p#include "复制构造函数工作原理.h"7 b3 Q; N" Z6 U" u
int main(void){        " T5 D. z: X; M
CA a(2,3);        
% I# F! J! g) G) za.print();       3 ^" O4 R5 m" m' ~$ [
CA b(a);        
( @8 g$ d# b; v" X, y# Sb.print();
! u; V1 d$ S! |$ T       / g  a7 M5 p! F
return 0;. N0 t" |) z% Q# k1 T' v  p$ y0 v7 _
}
  s7 |9 i+ s  Y
. Z, X. @- m8 I0 I6 Z4 j' k0 ]- p5 }5 I: f/ q4 ]8 D

- `  T. Q: @3 j# g. B' A& b+ s
  R: x1 \) y% `4 A
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
3 o$ ^9 h2 s' X1> 初始赋值时:CA b = a;
7 f7 e" t5 Q; B8 H2> 按值传参时:void myfun(CA ca);
4 f4 d/ J; Y5 w! ^9 I& Z. G3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
2 V* w" t( S6 n9 o% \& Q6 \复制构造函数在以下几种情况下调用:
. x, [# m3 \3 \! d, i" _" h1> 初始赋值时:CA b = a;8 S; ^/ [4 m) p- j# v4 c. H3 r! h
2> 按值传参时:void myfun(CA ca);

9 X4 t% M& B, J: n/ R9 r' E3 s9 L第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-10 07:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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