鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
0 s5 H1 Z0 }5 ~
2 n; o" O6 M2 y' N1 Y6 k; @2 Bclass CA8 b  T! C' d) j; M# w
{* _8 G4 \8 v  r" N7 G
public:0 g6 W! v* D- h# n! R
        CA();
0 c) \6 X& @/ }- D" ^1 h# H        CA(CA&);
! m  D* E' u; j. @        CA(int ,int );
; ^4 _3 o. \2 |: ]0 E        ~CA();
0 u; H. e! P7 R  z$ T( r' ^        void print();% I0 _& R/ \4 T7 N' Q! h8 H

7 |. Y6 S: g) q4 _3 q; mprivate:( w2 i( {, w0 I
        int i;* C- I$ k8 }' u6 o' g
        int j;
" ]) q7 m6 @  N$ [+ r' s8 k};4 h8 n6 J  o* [1 }1 L+ D  F, j" v

6 A3 n1 B# V1 q' X& @: }* ?, nCA::CA()5 b7 G' w- s* B" @
{
/ Y: R# |3 I0 b+ r7 D% f}
5 ~1 W$ N* o; }/ E- \8 X
0 W- I+ E7 J- D9 p1 rCA::CA(CA&one)
% K0 @5 ]" P9 D( `{3 L% ^4 N% k; i, Y2 f
        cout<<"调用复制构造函数"<<endl;! Q. E8 z! g, Q- B+ E
        this->i=one.i;/ Y/ a, L7 {0 Y$ L. y0 `
        this->j=one.j;
9 n2 m. c) |6 x0 h, b}/ y" A* s) y; ]
3 S" l- q/ z9 E
CA::CA(int m,int n)2 S# r0 S; I1 j( D7 g
{& z/ u" w; P' o# C0 s- [) m( }  s
        i=m;% M0 A: @& j$ Z& `8 ~( Q  m
        j=n;
8 L, R, z8 E, p4 }- Z}+ U3 j$ Y+ m. f0 ~3 a1 [
1 q5 w( r7 ?# W5 q; R8 t% X8 N
void CA::print()
1 ?7 i" E( m5 Q- l3 z% H! o{
; C! ]( a  u8 \/ x8 ~% \+ u        cout<<i<<endl<<j<<endl;6 `  N3 |  Q! s4 I
}
% N7 |' ]6 U7 x$ {! y1 B! ~" `, G5 ?, _% O' M, V0 t+ v6 e
CA::~CA()9 h2 Z1 T! `2 O# L7 M. a
{
5 R( Z" k9 n; p' P  t/ L$ q# r}
  t! O1 ~4 \5 t
& z' |% V7 B% r; O+ h" P; a#include <iostream># y- d( F; l. z% h
using namespace std;. L. U/ `3 l5 {$ o" x
#include "复制构造函数工作原理.h"
2 B6 K# D1 T7 l& J1 p5 p$ ?int main(void){        
( d- r4 @' F; a/ qCA a(2,3);        5 \" a/ K1 h$ A
a.print();      
" X, J: x+ |; p CA b(a);        
. W* K7 [) W) m0 S0 ~b.print();2 g# e+ |! J$ w- T1 M6 y5 I
         }, }) Q( U% U" J% ?1 s* ~9 I
return 0;: V& B$ G5 X+ o
}+ o3 ~' W- J+ J9 q2 q% Y7 f
4 _2 ^9 G* s$ @
$ b) B1 h/ J( _! m( \" x2 ?

6 S& L9 O* {/ s; `8 ]+ M  @. `% G4 y0 ~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
, O6 H; \( U4 \0 y1> 初始赋值时:CA b = a;
( l; s- b8 _3 M* ?1 _& c3 T2 n2> 按值传参时:void myfun(CA ca);
# z; }' P6 }6 A* f3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 * O: Z$ E5 s2 `& e3 D0 Q+ j6 j
复制构造函数在以下几种情况下调用:' o* f5 L$ {8 k- b3 h0 a% V: T
1> 初始赋值时:CA b = a;
4 u  H; v: h1 g" ]4 k. ~+ A5 i2> 按值传参时:void myfun(CA ca);

0 ]5 }: k4 d! c8 ~$ f1 E) A' @第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-2-1 21:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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