鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
5 W. e/ ~- ^! q2 H7 X, v/ Y# u. }4 ?0 w
class CA: F" e: i# A% l6 r9 f/ I5 `: D
{
7 A& ~! g; }1 r! m0 B. Gpublic:4 @$ O/ x0 L# U) u& W3 ^- q% }
        CA();
3 ~& [* X8 N2 B5 @, R7 B( R6 p        CA(CA&);. c8 f  ^, W7 x9 a
        CA(int ,int );
! @7 ?1 n1 E3 ~" R+ [0 v9 I        ~CA();
2 ^6 z! S# D0 P- s' o1 i/ o$ J* f! H        void print();
3 I) {2 z" L$ \( Y' G
% J0 ]/ w# k5 Tprivate:$ e! w! O. C; v& O1 Y& Q
        int i;% S  {, I9 j# P# ]) N1 @+ n; M
        int j;. e; ~: m( d$ V* _; A
};
1 p2 @; D+ R* ^) R9 D1 ~( f# v( B2 e4 D& L3 p) r
CA::CA()
: M" q7 h" o3 t' @# C9 J. s{
% Q  \) p. i. k( P  M- \* w* v}2 q* O8 t8 I& C; B
% M$ L/ L* }8 u+ s/ V7 g
CA::CA(CA&one)
- }3 }3 q2 a( s* T3 P) D% d: f! {( i8 H{
" }5 n- e9 g4 z9 H$ i! z6 C        cout<<"调用复制构造函数"<<endl;4 A" k2 J5 j) |+ R0 S2 F
        this->i=one.i;. y% R7 u, ]& u- p" ?# q  B$ z3 C$ o" t0 `
        this->j=one.j;" m* |+ a1 N' C* p" e3 ~
}
. s8 i+ M9 B' ?# R: w# d* o
; S- d# [. }; H5 [0 ACA::CA(int m,int n)/ m3 K& ^3 I) {! d/ T
{
. z' H. E6 H# n$ G& u6 f        i=m;
$ C9 _" g! u* y2 ?# Q2 I        j=n;% p/ m- i: {2 Y; t3 ^) Z* G: I
}
7 g  z! S; w2 H, W. G- J) \5 f' b$ E$ i* X( D5 n1 z
void CA::print()7 T$ i  G; u" H; e
{
: w2 k* `) E& r8 F8 D& z        cout<<i<<endl<<j<<endl;
% h8 T! z2 L' {# S7 l; T& v2 F}
! k; p& t- j# I& ~5 n9 L/ y, }, d9 q; N0 N0 L/ y5 D( s
CA::~CA(). Z: M, Q. ~5 R' \0 A& i
{8 z8 G, ]* h# @7 h1 ]
}% l" L6 r! i6 z* M
* L! ^' ^9 v0 N  V# M
#include <iostream>5 y# [3 N5 H* q
using namespace std;
4 p! r3 j# W7 q, F/ a  g$ A# w#include "复制构造函数工作原理.h"
. o( Z; P; A* lint main(void){        . Z8 K8 ?+ H0 X: r( X2 a
CA a(2,3);        
) ?  E+ e* a. \$ t' t) u+ J1 qa.print();      
, M9 N& q) ?( J5 } CA b(a);        
, ~7 b( S- G; ~  z# x6 q+ w& O& ~  db.print();
$ g! h: t  W7 P/ Y8 S3 n       / U* y  l" S' M
return 0;
% o9 M" a3 p4 A}
5 C# \% O' _  P" F* n5 ]3 f7 N& \

6 H! w. n$ D5 X- ~; H5 w
- T8 G- m; o8 r( V9 X4 P7 q2 ]0 Z: X7 y/ D9 y7 l4 p8 Z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:+ j$ T3 M- ^7 A% R, g) i/ R
1> 初始赋值时:CA b = a;& d) X- V, {+ E* P  a
2> 按值传参时:void myfun(CA ca);
7 Q6 W1 b& _6 w) Y* y+ D# ~# r3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 # S6 l- Y4 G9 m/ M$ P' `$ M
复制构造函数在以下几种情况下调用:
5 ~/ V% Y, z% H) H1> 初始赋值时:CA b = a;( i  T' t- V9 ^7 p- M
2> 按值传参时:void myfun(CA ca);

4 p% _. Y% Y6 C  F第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-12-9 01:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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