鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
4 z& j5 W+ J% o( E2 E$ O# P
3 j7 f' Z5 X5 t  cclass CA4 ~7 l' n, p* l& S- t! a# U
{$ ]& B9 P% s6 K& n5 q: r
public:3 r$ e, l9 q% `8 J. S  m
        CA();+ x8 ?4 R* X$ u: J0 P* O! ?
        CA(CA&);9 N; V. t/ @1 A7 K* B( H. y
        CA(int ,int );
/ R! S% D8 l1 P/ n        ~CA();
$ d1 B5 }4 {- W) [. @& R1 B        void print();3 ^) r8 d# U3 E7 c
" j# o5 Y; ~4 Q4 l' n. v0 @/ W8 ~
private:4 l1 u$ G8 {: h2 l% Y3 {
        int i;
& {+ l$ ]  |0 F3 Z6 E1 x  r        int j;
* Z# E7 J) M5 \0 A0 w+ G$ D5 J+ H};
, c0 Z: I% t. i9 y+ O" k0 |7 P6 b
: V, i3 {: F/ `( ~* CCA::CA()- o5 E; ^: k' w9 u. i" u
{7 ]' E* D+ X1 r! K
}
/ _6 I( }2 L1 k6 R3 Q; U% m4 n6 [7 i8 j& b
CA::CA(CA&one)6 s  [7 L7 }% r6 B
{
( m) j7 g5 t" C5 l2 G        cout<<"调用复制构造函数"<<endl;
6 F- `4 Q+ j, N' h8 x        this->i=one.i;
) d' O( Y% N% H+ S) r/ K2 G5 h+ Z3 r        this->j=one.j;
/ v, z/ i, o# v' _}2 Z+ L" O1 |8 \
) |+ y; a" H. I9 K+ h/ e' ]) O
CA::CA(int m,int n)
" U* J' H% J$ }' R8 Y{
. m' T' Y8 u6 s        i=m;
' W1 {; z: `* S# Z        j=n;0 j0 y* m9 z6 l$ T
}
# U( p: J: q' j5 f+ `
; M3 N8 `6 E* M  o5 r" vvoid CA::print()
7 \3 [0 M! ?- a7 q) X{2 G/ h! V5 {. ~4 K& R/ \
        cout<<i<<endl<<j<<endl;0 [) y) I1 u5 c) i- P
}0 q; p; a6 d, w5 z9 L$ F* L) S& P

/ b+ C' F: E* G1 g& V$ F' G/ iCA::~CA()- R! t# B% y8 w: K# T% K
{" W* n9 z) [" I$ |' z9 w% \
}
5 ^' q/ {- T; _4 t2 a+ v2 @( N8 ?* \+ K6 v& r( H( |' Y1 K0 ^
#include <iostream>
! T9 k: k- Z- a7 A6 ^# M0 x5 k$ uusing namespace std;" ]+ P) ~( N5 C
#include "复制构造函数工作原理.h"; d$ }% r+ ^; F  J9 V! \8 n. G
int main(void){        3 n& E5 c1 U  O) X- o# n1 D, o
CA a(2,3);        
% v3 n* ]: V3 I4 h: za.print();       ( y7 _; J' t4 _* S! D. I& y
CA b(a);        
. T9 a' p1 }$ @3 T% Z# hb.print();
$ B( d6 h3 p7 ~8 M      
% H3 N: S, p4 q7 N return 0;1 {4 _+ Y3 o2 y$ f. w& C- e
}
# s) q7 u- a6 P& c' `5 j2 g( m
. T+ w( E5 B4 z  a3 m1 S$ f' S* M( d1 c( X5 [
" I1 G5 ^2 B7 P( e1 W2 G
$ r' j% O5 B2 _5 S
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:8 A/ W+ g- e( c0 S7 O: V1 F7 R- I
1> 初始赋值时:CA b = a;
3 S. E% P' s) l3 A8 d: l% b. z0 P2 R2> 按值传参时:void myfun(CA ca);
7 \" Q+ P7 N1 v% i& \, e- f3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
  d; F- a+ z' M复制构造函数在以下几种情况下调用:
9 u4 d, l% G2 Q9 S8 x* B! R+ `1 k1> 初始赋值时:CA b = a;
: d/ b! [0 ^1 j) o: \! c$ {  F2> 按值传参时:void myfun(CA ca);

( m# d8 F2 ?- Z# G第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-15 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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