鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
! }! w: u2 g) L# }0 w9 Z7 w1 l" i3 L( G4 T5 K! ~) n" e: d. A% m
class CA
# g$ ~# f8 O9 w; S3 n7 B{
: J8 V5 v% j3 J' T' Y9 `+ K8 dpublic:
$ t+ ?5 n7 x* ^9 F0 ~+ I        CA();1 B3 N5 m" |& s+ x" j
        CA(CA&);2 k9 \7 v  X- i6 p$ H- r  ^3 M
        CA(int ,int );
/ X6 N# `* B2 j9 x+ k; a        ~CA();
, B' t: Q. N, h7 X. K1 M8 U        void print();
7 \6 T8 e# F/ a% m3 P( q$ ^& b: u/ S3 m2 z. R
private:8 ^% |; O5 y( Q) w' U
        int i;8 N5 w: O! {' q4 ^9 Y9 d# R: `
        int j;. k% y" |2 s9 y
};0 P3 u. v( t. l  s; t% X
, G! x6 ~% Q' p( j, h
CA::CA()+ L: x) k# j, O& y8 _
{
# }: T3 a& e5 e' o* e( |8 o/ F}
1 y; Z# a) N& k' ~) B5 [$ M1 W3 t
% @" g* b! H( j5 i9 mCA::CA(CA&one)( K7 X# o1 K4 n) H+ v( Q
{
" @$ Z# t0 L* s* N' }) `        cout<<"调用复制构造函数"<<endl;% A- y: ~5 b. {+ ^( _+ [" T
        this->i=one.i;
9 K; J* j5 D" ?$ a! j        this->j=one.j;' M+ f# n8 ^8 F0 I
}
  B! p- T; q( Q) ?! E0 u7 v2 |5 @: U; h, \# {# m7 F
CA::CA(int m,int n)$ F5 c- w, n4 W) I- L
{, O9 R/ D* K% I0 g# \3 o4 w) l
        i=m;3 g- b/ i+ {/ j* |
        j=n;
3 ~- e5 }) r5 m- S: V! a}
+ \9 A2 w% i, e8 l/ P1 c
  U* n8 m: x' ?1 j1 I$ qvoid CA::print()
: I; B- E' L8 J5 C0 a, h# W+ N0 ]9 I{
' w' J2 ]. p- @1 E: f" _: `        cout<<i<<endl<<j<<endl;2 j' R/ O; D+ e2 W. @3 z/ k8 j  W
}# x/ F4 j8 V& |+ c$ E! V4 q

1 E2 F; O; T7 P0 G4 h1 b8 tCA::~CA()0 o( j' m& Z7 F8 `$ u/ y
{
2 [  o/ f+ ~6 s' U6 j6 z9 q}
+ a; n# N' Y+ Y! [6 G/ m, M6 r
/ a- f7 [9 {8 M, ~0 D/ R7 v#include <iostream>. U# z6 ?1 k  V9 u9 I; z  B  L
using namespace std;
) [6 ?; _8 i+ O# ?2 ^; \0 c#include "复制构造函数工作原理.h"
6 f5 c) {5 ]9 Z8 ~* p" nint main(void){        1 j( x  t( Q5 W6 L$ ~2 f
CA a(2,3);        
# h/ I6 K' Y0 K3 [9 ca.print();      
$ j3 `6 P2 g, c8 S* Y" x0 L5 e CA b(a);        # i9 R6 ~! C5 |* ]5 S$ x" O
b.print();7 c2 L$ K3 M6 t& |! @
      
+ y2 ?8 p2 A  {6 V  d return 0;
, r) _& y4 v" F6 R}
  @. x( F- T# ~4 A. ]& i% r8 r
) J) z2 ]$ Q0 E% _; {" l; ]
. t% X6 h: j! q* ~; C' ?/ K1 m
& z5 _4 J% Z! }9 }/ x
9 }! l% b# `) B
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:/ Q2 @, E7 s2 Y3 `0 {
1> 初始赋值时:CA b = a;
  {% h) P$ s1 \" v* m2> 按值传参时:void myfun(CA ca);0 W1 m5 G! R9 z( p! y, I3 x
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
5 a/ n" s* s# T复制构造函数在以下几种情况下调用:8 r+ V& u) w% ^7 q& k( `9 W1 S; Q7 O
1> 初始赋值时:CA b = a;9 V+ G& F" k, V1 t) X
2> 按值传参时:void myfun(CA ca);

4 t( r3 b$ R0 F9 j第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-11 14:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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