鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 2 s, z  Z- Z5 d' d5 K
1 M7 T; B$ L4 D' g( ]) u9 D/ {1 [
class CA
% v! l0 j  L8 K7 n7 h0 C6 L+ n{
  E1 p! X' D% _# |# H+ Opublic:$ h6 p7 g7 `( r, m) i3 R
        CA();
2 Z0 N: v% ^% @. `1 c        CA(CA&);
/ v6 H5 y$ }0 W: S9 b  F4 b* z: C0 ^        CA(int ,int );- L# J, {0 j7 ^* E! H0 ~' ^
        ~CA();& N' f3 j- }7 C7 F) e8 `  I
        void print();! u) w: d# ^5 }
  G% ~0 j7 @! d1 Q0 p1 @$ ]
private:; }) p% ]2 k& }3 ~4 k/ q8 a
        int i;
( j+ u& E' F3 v7 C, j/ r3 ]7 o        int j;
2 t3 ?& O6 L% S) h' ?0 b7 q};
$ U: @* a4 N# @% K4 T0 J9 h( M# j" T! ?7 {% g" A$ U% M
CA::CA()
' C+ o0 G& |: Q- C# _; y{
6 e! o: g. B+ Z6 w0 f" i' v}
$ k, R) q; d  }* q/ L! V% e4 u  ?  `9 d& f7 D
CA::CA(CA&one)8 @. t5 h  V. |7 c  X( ?9 j. m
{" ]7 R6 e; O$ {: Z" a& o$ D: |
        cout<<"调用复制构造函数"<<endl;
! ?# t1 p, M$ C9 w! @7 A: O        this->i=one.i;0 D- D6 w. O/ u7 P( L- b9 t
        this->j=one.j;
$ x5 _4 I- z7 `}
/ z2 o; N* h6 T2 G7 Q+ T7 s3 H: r
/ A! `8 I# @* V/ ~9 rCA::CA(int m,int n)
7 M, i7 w, i' Q+ F{
- k1 Y, A0 h. R- A8 T, j: A        i=m;! {7 \' S0 i' F: \& u. `+ Z
        j=n;
2 i8 Y+ O. i" c1 d}/ f6 S5 J- D0 ?) v/ u# g/ B: M
( ^6 d% f+ ?+ `. d* E* r' h( p
void CA::print()- `1 K8 h9 j% W9 q3 O6 l% H3 G
{1 V) G3 `  d- }1 Z4 D. @
        cout<<i<<endl<<j<<endl;  T- Z7 y$ D* l5 X+ j
}6 l) v! M8 i4 g& C# ~

: X. J2 u4 S( f, e8 fCA::~CA()
" b4 I+ _) ?+ _8 A8 ]{
; q: ?  Z' ]) J5 k. j}, D+ k3 Y2 k2 d" L" w$ m

2 ^. [2 r* A3 T) z* @( q#include <iostream>7 T- C" S+ b) Z1 u3 Z
using namespace std;
" m/ E2 d! A' s5 T#include "复制构造函数工作原理.h"8 d0 T: L$ Z3 q1 A( M
int main(void){        
4 H' X( i* w0 ACA a(2,3);        : S% Y6 [. L+ e& X4 }) r
a.print();      
9 \' X1 X& q% X CA b(a);        
% x0 R; Q" z; C8 M' db.print();
8 t2 B. U8 c5 T( h9 v& _  F+ R0 j3 ^      
3 @4 u# j6 V0 r return 0;
) o( I2 Y5 N8 y: x) I5 }}5 M/ t; h/ O0 A% [2 a/ c, A! W# z

( \- K: s8 r8 P$ n+ a( O. r0 u2 W  x7 R2 @$ a* @! |0 M

0 G8 I* }1 S3 m: a3 Y. j' b, f6 E6 z5 e) U; g, b/ h
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
+ c! V* C( ^* J1 J$ ~1> 初始赋值时:CA b = a;
( J& m9 a* i  t! ?; S8 B) ~2> 按值传参时:void myfun(CA ca);% B. ]9 n& x" i7 S) Y* B
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
6 \* `% u; R  v; g( F复制构造函数在以下几种情况下调用:
! V* [1 z5 B( q0 o' Z) Q) g7 N1> 初始赋值时:CA b = a;, F# B9 d- A0 M/ V
2> 按值传参时:void myfun(CA ca);

/ \4 H1 m% ^% ~! N$ O* z9 t第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-3-3 02:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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