鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 8 g( C$ {: H7 G/ }7 }/ M

' H9 R7 B8 R9 G9 R! |class CA
  ]8 A, K) [, v6 ?% O  g, w{
: A" ?/ X# W1 d; q2 j% m: Jpublic:
( X  [0 s, G; }4 c6 J! o1 E1 J        CA();
. L! @5 e1 {& Q- L0 T9 T) @& Q# Y, I        CA(CA&);
6 A' x- l5 d! L: d2 T; r7 q; c        CA(int ,int );" J$ Q& C, n1 y1 Z# q# K+ y
        ~CA();
# W5 }" s0 j# m9 D1 t5 t, G        void print();4 \7 V9 G7 y  m. W$ j; \. Y# u

- `9 b7 v6 F* yprivate:* C1 o( k; k3 }. ]  U. y
        int i;
- Q* ]$ i1 ?; [" K2 p1 {4 c# f1 s        int j;
  W1 O1 V; {7 U};. b  O: v- A7 T) Y" L$ B, j
: a; E4 [+ A- K6 L7 [$ [
CA::CA()6 e* t8 t6 H1 a/ t
{. T, j: t9 X2 O4 U9 v
}
5 e0 r0 R5 d5 m) x( e5 F" s' A
: x' y. S3 ^) c- C- a" r& D: `CA::CA(CA&one)
$ n* Q3 q$ k. ?8 U9 C{
; h! q8 Z/ F0 g9 ?        cout<<"调用复制构造函数"<<endl;! j; m- C( U- l, s2 i
        this->i=one.i;
: G* M% h- k3 p- w4 ?2 f# C* s3 K        this->j=one.j;  |$ S* r4 F; z3 {0 \
}8 k/ d8 I* s) ?% s
; T7 I/ e( o3 K" f, ]; s& b
CA::CA(int m,int n)
; N' L* T7 I9 d/ c: k$ c; H& Q{" q. c: |  G& z: i# e
        i=m;
# e) h& b2 [$ P$ e5 F; I        j=n;# q) i6 [+ }1 t4 ~' r& |9 W  _
}
$ [0 s4 G1 {5 U7 S( r
) k" s- N  M/ p+ S1 w% t% H8 Nvoid CA::print()/ ^- V) g" G# L6 q
{
  @$ Y& x* `5 U8 U# ?        cout<<i<<endl<<j<<endl;0 L: o- S9 B3 ^. }3 w* t/ P
}
2 X% q3 [0 L6 q1 @2 {$ S( o- G. n, M
# t: V/ C6 {- tCA::~CA()
# D6 R' z: v& d3 `{
$ o9 s! Y  [; {! D}
! T" H5 \# @6 b# E& o  e6 k: }/ {
#include <iostream>7 y' i5 v5 \0 ]( M
using namespace std;0 Y/ ~" D* c; k# u4 n
#include "复制构造函数工作原理.h"( t9 o! ]  a3 E% T2 T
int main(void){        9 k, ^) D& t# e: z
CA a(2,3);        3 f- o( Z% @, a; e2 Z9 A! }" r
a.print();       8 i. U) l. B' a) e; P4 j6 H$ R
CA b(a);        7 m$ Q- M, l' q- w5 a# u- y
b.print();
  l! w$ M& j8 ?- f4 v7 m! b      
" q9 N* W' _% a0 e return 0;) z! ]  `- R% J, s* s- I! u
}# A1 P* _  Y$ C) m) _  V9 r; [6 y
8 a: H8 N6 t9 h+ n/ U3 r7 g! p0 ^

7 P1 f% A! q' u3 i# ~9 U
" R/ r" a6 r1 p  ]6 \- ^
- l8 o9 v; B8 d$ U
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& }8 g5 R+ I1 }  Z5 C( b1> 初始赋值时:CA b = a;
2 l5 J0 o5 l1 H& C2> 按值传参时:void myfun(CA ca);
& M3 D9 w4 n/ T. h- F3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
" `. D+ g$ x( f. L- a& [1 B5 u复制构造函数在以下几种情况下调用:
6 n. {) v1 M8 G2 K/ M1> 初始赋值时:CA b = a;3 y- _( K* @& b" v. Q1 L* `
2> 按值传参时:void myfun(CA ca);

  g5 c$ A# [8 i1 R, E第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-6-22 14:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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