鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
2 n3 Q! Q: u/ e! p
) L7 \/ G. @8 |! q% Iclass CA
0 `4 y. W6 K" ?" r; H) o{8 w  w$ ]7 O9 R6 f, y" r
public:# X3 E0 H$ n& l2 ^; o6 s
        CA();
1 E2 c& M: ]" w  }        CA(CA&);
7 O, C2 k4 ~  ~, ?4 Z) _, E/ q( d        CA(int ,int );
& f) N; m" |" W" @4 S' f9 x- u# \( f' }        ~CA();1 I, y9 G% q( Q6 X
        void print();/ r+ g' U+ A! Z8 j8 X( U

: p! `. o9 }' {4 C6 L4 d* I1 Uprivate:
5 q# c  ]0 V4 X6 w0 x. V  R# z6 |        int i;: V) ~5 \. M  n9 L$ T
        int j;
: l0 F3 r$ B$ _* s};# g% v" B- }* L! ~" R. T

  C2 ^2 F0 U" qCA::CA()
6 i7 h( [# J# c, Z# c: d{
; K5 a- r9 b( @( y( x- H' j! A}
6 d2 Y/ j0 F* l
4 |4 D; g8 q  F! ^. i, {CA::CA(CA&one)) _1 Q( [) @0 _. M/ y7 _) h& u
{  N  u3 D, z) k0 B6 h9 r# U
        cout<<"调用复制构造函数"<<endl;
+ g; K1 z, m3 Z0 ~/ K$ g3 f- z        this->i=one.i;
' a6 R( M* U& t& O: q        this->j=one.j;9 j2 {" y0 X1 B$ P* Y6 j0 E8 C" W& `
}
& y8 @. \3 v; |* M7 L; c
' G$ O: U/ X8 Y6 \1 n: ?CA::CA(int m,int n)
9 i. `5 q! D: ^' U{
6 }( {) S* g! C2 u        i=m;' g+ }# w1 w% G
        j=n;
6 H/ H5 K2 n1 v. o6 B, h9 ~7 I}+ D& v: ^1 O/ H/ ], f  Z% h6 U
0 V. [1 ?, ~& ~
void CA::print()4 z# G; t6 F6 C" c9 J
{+ _/ u* X0 n7 E! _' ^
        cout<<i<<endl<<j<<endl;+ ~' g4 x. x, J1 a( _
}: Z: m$ w9 p' l& {0 w
* A% W. x7 C& F) K! K% I) _  }
CA::~CA()% S4 t) X3 O( H/ @# V1 P
{
/ \! }4 ~: X9 ?: {2 U4 n}' P  l( Q3 s  g  s  v' m4 k

- s1 Y. }* M( b& D, h#include <iostream>! t5 |7 S9 m5 y& ?' ]3 U4 f
using namespace std;
$ P0 X$ {: Y& I+ i# G#include "复制构造函数工作原理.h"
7 ^6 ~! @* l$ T) v. D; Xint main(void){        , M3 y! T3 Z7 I, K/ q
CA a(2,3);        6 G8 X$ ^( h+ h8 h7 R) ]3 I- ]5 a
a.print();      
! U$ G6 R. q8 O0 o6 L CA b(a);        6 b- s  @, h: a$ k: ]' N: D
b.print();
9 B# V& e) `% J4 t# F0 P       ; c- K% f0 {! \- Z$ _4 Z- n
return 0;
4 K( D& a0 ^" {6 t/ N( x( Q}; J( s" e+ \! g  n% ?9 |! u
. q+ d* o9 A! R3 J' q. O

5 [  C  _6 k2 ^
5 ?* q4 z1 f6 H8 @* V1 T4 |/ ^! v: n1 g7 h+ s
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
0 j' J+ i( s$ y' }' y: n/ ~% O1> 初始赋值时:CA b = a;
" |7 g6 H% X8 P2> 按值传参时:void myfun(CA ca);  e0 D+ G2 Q* r8 u( C. e+ f# v& \
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
/ X% s6 B6 X% U7 ?; K, y: a复制构造函数在以下几种情况下调用:
" J+ a1 Q# z* F' X  k4 `7 \# n# f1> 初始赋值时:CA b = a;
  V7 @. D) l1 R2> 按值传参时:void myfun(CA ca);
+ U% E1 o4 c$ O# I4 `
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-22 22:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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