鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
+ t, U6 R2 u0 k. p# J7 q
1 p4 q* V2 Q' Zclass CA2 U" _, D/ b" I. r1 {
{( U4 r: i, W; l# `/ J2 d
public:
2 G* ~; a& W* K( ^        CA();* c# t. F- O- I2 Z% Z
        CA(CA&);# R4 ^, ]+ i8 P0 r, I% p; F5 q% v
        CA(int ,int );6 v5 t1 U! Z. ]+ m0 t* j& V
        ~CA();
7 B. E4 v, G" r1 G& \        void print();
* U; h% w. k6 P6 q6 j8 Y+ D+ E2 i2 }
private:9 A% ~1 s: O8 \/ Y1 U' f0 s
        int i;
* f* ]- ?8 w6 @& B; n( Y        int j;& A; Q% s9 o2 w& ^; W) t. j/ e
};! u6 |% e! R  ~* K+ x

& y: v/ V" D/ k/ r* z* W2 G. aCA::CA()
' X0 s! N8 p( [* J# r{! E" d- W! f! p8 D' J, j1 V
}
; L1 {8 k, U2 X' \# Y
4 V: F+ p. Z# jCA::CA(CA&one)
; z- B4 h; S$ o; O{" M) J' L( u$ G6 S4 U4 c9 g2 C! o
        cout<<"调用复制构造函数"<<endl;
' a( _! ~% c" W: |. m* q' K: a6 h        this->i=one.i;
- }% c  j, \% r8 p, B4 A6 @        this->j=one.j;/ O$ S& M. W; i7 a9 h
}
  c, O; H8 \) N5 R- U, R* E" u  }; [1 W( u; H
CA::CA(int m,int n)
7 ~' k% ]4 ^4 u0 T' N{  \! t1 v7 [; P; `! N
        i=m;
- m% {1 o7 L& l+ _9 W        j=n;
& R( q; b9 q  @" }( B}
% m! N1 _4 r! I
+ Q/ f+ Y1 Z) w7 cvoid CA::print()
; f9 }+ |$ Y! u# @{
7 ?& w9 q6 n0 G        cout<<i<<endl<<j<<endl;3 l( f& l8 I+ L4 C
}/ n3 b) n3 r1 y8 l+ m" A6 j
- e, G" R8 t( C
CA::~CA()1 f* E* `' L/ s+ r! b
{# l4 F9 X( p7 u) G
}
/ T! A: b3 \; z# B/ o6 }* A$ `0 Z: U) {1 S1 _, I, p) ]/ P
#include <iostream>/ p3 M9 a- e/ p6 M9 C' @
using namespace std;
# d* x$ \. G5 L, q#include "复制构造函数工作原理.h"( q: B" n/ y  a  s
int main(void){        
/ c& s  X" ?4 E+ t, C5 G# cCA a(2,3);        $ r% K" {+ h6 e, X- }) {6 Y; p2 @
a.print();       - m7 d' F% ?# G7 k) r- |
CA b(a);        
9 ~9 J: F" Q# X0 X: i) }b.print();7 Y' }6 f; z$ V- x9 e9 Q, e1 o
      
8 s4 L" u: f- W$ j' {9 N2 y return 0;
1 g3 D2 U7 e" b/ {}" @) G1 b# `% k) i$ L
3 ^* N; [+ k3 _& O# y
5 D1 r  `9 F4 h( r' y
: t# _9 J+ k+ r  U
$ `. ]( A# U3 d  \
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:! G1 A! b: M! D, O2 f; u: ^& s
1> 初始赋值时:CA b = a;* l. k% I! d1 x, M) P
2> 按值传参时:void myfun(CA ca);
( G" U/ h0 w' I# n. u- }, f* Y! ]3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 8 v* T+ ]# T$ [- g
复制构造函数在以下几种情况下调用:% [: z: [/ }+ c4 P$ ~1 a, O" g
1> 初始赋值时:CA b = a;( g, v% M  T5 B8 A1 l. d
2> 按值传参时:void myfun(CA ca);
3 A. E. E8 t+ I  _. E
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-6 08:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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