鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
% @# H! o: q7 ^! H, B5 b* Y8 G: i. k( x: m8 \7 r. g
class CA6 }; Y3 b/ u+ }) s4 {$ R6 F5 d
{
* o$ f: c) e8 n% {public:
- g7 ]6 K' ~# A/ ]1 G, @$ G; |4 U7 `        CA();
" Y0 O, N* L* P( D$ U9 f! ]2 K        CA(CA&);
, {* F5 [9 Z; O8 F8 h2 ?. o% o! H  G" f% [        CA(int ,int );* W0 l1 I. @) G# `" a& I
        ~CA();' i0 M+ E  y* {
        void print();
) Q7 k4 x" Q. r4 i% \/ n  V( n4 K1 ?' I% d3 ^6 l
private:
% ^  s/ e. n8 K  s& ]        int i;4 r, U9 }( p1 J: \
        int j;
( I, g: d6 W+ u8 }1 C) O; ^* J};. J8 z, H4 Z$ v! Q+ U8 Y

  p" L! m, f, mCA::CA()6 ]; N' G- B. h. K! x
{2 c8 x9 H. D4 y  C* F$ @. ?
}
" u. M& j4 c# `4 a$ i7 s- X; o. j
% {4 c! I9 q2 g5 D6 X- R1 ACA::CA(CA&one)4 ^8 S" E2 Y& f
{2 Z% X! g$ ^: j7 a" F
        cout<<"调用复制构造函数"<<endl;) V  ~5 t, j* @/ L+ m
        this->i=one.i;
( ~( M7 \' g. b8 F        this->j=one.j;* Q5 J# i4 @4 @) O/ ^
}
7 i, z$ }$ y9 A# P
  [* ^0 M; U2 i6 T' l2 \CA::CA(int m,int n)
2 h+ v  O6 w7 D+ U1 O1 u7 Y{& r" e# s$ L7 j3 ~
        i=m;& e' `: x4 G9 P& t& T" Q5 L
        j=n;/ c* H: X0 k8 e7 Q- b2 u
}
# @. ]3 `$ Q5 h1 s. O5 H& r' n  v/ A% Q: S
void CA::print()( {/ q0 i) X: _- s$ K* p3 I1 o
{' M% Z, h4 x$ K' s$ r* ~! a
        cout<<i<<endl<<j<<endl;
- E' o( q* X# f+ X$ k, |* A}2 p8 b, B. Y/ j' ?3 G6 H

, o% U1 Y. I8 U; F8 G9 mCA::~CA()% n. Z! e1 t4 I& S; q
{
: E4 U( p7 m9 d) ~}
! r8 ?& t4 d7 i+ e  ~/ S
* D7 p( w8 h3 ~6 Z#include <iostream>
! R2 E" c/ d. p: W, P4 P- L9 Pusing namespace std;( @9 W+ g0 s" _. T6 |6 {% J
#include "复制构造函数工作原理.h"7 C' X) D! x9 c6 G
int main(void){        4 B& l  `4 Q8 P# F6 q
CA a(2,3);        
$ n- x7 T9 o( c/ V' o+ Va.print();      
8 U# U  X8 D9 `0 ] CA b(a);        ; l. A6 L; }1 s) d6 U0 r1 o! `  D
b.print();  U% v, }* w! b/ S, H2 X- O( k
       1 Z2 J  \& J' R) e
return 0;
5 O$ C' n9 f+ e2 M& K7 S4 u3 _}
- \# t. `& A7 P. j
9 x5 g" D6 l1 _/ s! Z. r' S6 J- o) o5 j! o3 T

" y% R# x2 Y2 [  L4 u8 X# u. _1 s
% y1 E* |; w9 |" a$ U8 W
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:6 a- l6 a, u, ]) I0 i6 l
1> 初始赋值时:CA b = a;
* f2 N, g: A- |' u7 C2> 按值传参时:void myfun(CA ca);9 ?( P  J4 p. V- D  ?
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18 ) j& |0 W, @2 J5 N/ r, a$ t
复制构造函数在以下几种情况下调用:9 l0 s% [  D$ x; P
1> 初始赋值时:CA b = a;
/ J' H' I& j" l! x2> 按值传参时:void myfun(CA ca);
4 s0 H8 o1 I  e" W% v
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-1-23 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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