鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( Q( }; z; X3 u# E; c0 f1 \& ^# k; ]# `$ U. U5 b% i. d3 x
class CA7 x  E7 q( ]8 W5 v. d- n+ m
{# ]& L5 X+ m) u4 W' D
public:
6 |# k- ?" k4 G( t3 ?9 d/ y2 L        CA();
1 H+ [9 \& E/ N5 B$ _' s. `        CA(CA&);) P+ X/ o5 E, \2 P% ?8 p5 e" _
        CA(int ,int );
  A& A0 S1 p" G1 I        ~CA();
9 U+ n) N( V; {! k' I3 O1 ^        void print();1 I8 w* S- u6 _* p# `( ^" B6 E1 b
1 e  r0 k1 d5 h8 [7 ^
private:
$ j, X" N  T7 H) {        int i;
, ~6 D- i- y1 D        int j;3 m. p! P) l+ }- P+ M9 z1 I8 a
};, R7 Q/ x( Q" s; J" t
9 o7 P  `! t) G8 u8 B
CA::CA()" q7 Z3 l, V! O9 X  X1 \0 x
{3 l" U; _. U# \7 j' s! j+ d, Z' J. \
}7 u# Q' y/ v% L% j% G6 Y6 S

; F; X2 A" {4 A2 ZCA::CA(CA&one)4 b, c# k/ H9 n$ s
{
( g/ v3 r* G7 z$ y6 j        cout<<"调用复制构造函数"<<endl;; `5 \3 g& k( Z$ l: m  \
        this->i=one.i;
/ ?1 G3 f% P# b0 `3 H. K! ~8 Z        this->j=one.j;
  M5 Q  l3 H% n8 {}% O) x# O, i- D/ {& P! r2 l
+ R. l& U& A. I6 O, Z, r! T
CA::CA(int m,int n): A7 \. f8 e; Q! R
{
, z: |3 {: G5 B8 q! p6 T# w& f) n. Z  s        i=m;
! h# R6 u9 h0 z0 a5 g        j=n;, E8 h8 p- C( a; m
}; `2 r" M* h4 H( b+ M

3 I5 I! [. C& k, X7 }" jvoid CA::print()3 [+ o$ h& N- f! T
{1 y7 R1 d. W+ t- m1 x0 w
        cout<<i<<endl<<j<<endl;
- E2 C. }1 P3 l/ T8 i: ~' S+ H}- l' u( D  W1 x" _$ W, C

7 Y7 o* Q1 B2 N' v  ^CA::~CA()
. A: K* v6 z$ a7 q{! G$ y1 X$ B8 x4 ?: X( e8 x8 k
}& d6 |/ O3 R8 @7 Q3 M, g2 X

( h0 Y6 m3 d1 K3 a. D, i/ K% V; {#include <iostream>% d' Q" C- g) j& Q( v# R7 I( C, Y
using namespace std;
% E/ ^. K4 M9 \6 R4 M#include "复制构造函数工作原理.h"# J8 O9 m) u% }/ p
int main(void){        , G5 _2 ?+ g/ R! T
CA a(2,3);        
5 E; R! d' f# g7 R9 l; M! ~a.print();       ( [4 U/ d! X8 \
CA b(a);        
$ ^; t. i. E. ?* m; \" }b.print();' _! u2 x# ], c, ?3 g  }& m
      
0 e" V4 n) }% y/ ?: w: u; v return 0;
7 j, @: i9 N9 J}) {8 s- U; u1 ]2 n, ^8 v' ?

$ e1 \7 o/ C$ l  X6 N8 V- l" D9 ?7 W# C! m
) n( ]/ `/ i8 v( a2 \9 [
; F0 i- p. V+ L; ]& j$ s/ e# V% B
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:$ b0 Q2 c- H2 v# V
1> 初始赋值时:CA b = a;6 ^6 ]. g6 c0 I% y
2> 按值传参时:void myfun(CA ca);
/ U  c) X% @7 U0 ^! J. _4 ?( F4 a% K3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
+ a- H4 X2 k; _. [; B3 S6 _7 s复制构造函数在以下几种情况下调用:( Y; x( t/ S3 U4 j
1> 初始赋值时:CA b = a;
6 r. R: w. Y: S+ K, K2> 按值传参时:void myfun(CA ca);
  v9 s* M% ^" @
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-17 06:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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