鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
( ^$ E$ l" i, K3 c; [6 t/ e6 H# j  \* ^
class CA6 m8 |" O+ Z3 O! Y) l
{9 w2 [( i5 O" M4 P( T3 l; V9 A
public:
/ t! g- ~" e; e! G: P0 [$ r        CA();. O' R9 V) ]; J
        CA(CA&);1 N' o  [) A3 }: Q, _! @# z) X
        CA(int ,int );
  f9 |  ]0 ~+ A2 v$ r! G( {* H        ~CA();1 v" e( A& b+ r- r5 N0 P5 |. v$ }
        void print();, f& _5 {6 B% l

/ X$ ~# p8 ]* |private:
1 ]* P6 B4 y# [        int i;# f7 V4 _' G+ s% v8 L
        int j;
  H8 q1 A' h! l. ?4 _/ c};6 i7 a5 W- X4 c) b7 j
* f3 @" a! d& F( ?' @" S0 O
CA::CA()
) |# I( y- L3 V! ]{
  n& K' W1 W$ q}2 ?0 E7 h* ~) l2 i

' P$ p: s; k3 b0 {, ]7 N5 w; dCA::CA(CA&one); U. v5 V1 x- j  a+ k$ H
{
, x6 T0 B$ x8 a% Z$ ?0 p        cout<<"调用复制构造函数"<<endl;2 D* b1 y7 c6 J6 }4 D
        this->i=one.i;2 d: c& P' V1 r
        this->j=one.j;9 v/ R3 J' z* O' V
}
  I4 F: @( [1 g; ?0 J  u# ]2 r7 Q6 ^- ]& M# s1 N( f9 {0 H
CA::CA(int m,int n)
4 Y3 z% N/ E6 u' `. `{
2 O7 n. z3 o2 O* P+ G" F- l9 U! f        i=m;
/ J# m6 s7 J' K5 M1 g        j=n;6 S2 G. Z. {% a6 |/ }
}2 |9 H4 {6 ?7 l+ T' ]4 O+ u( o' T
, @; W; t* }6 Z' E# T8 {
void CA::print()1 A0 Y0 |7 I2 S, B
{
) G/ ^' U/ y2 ^+ C4 _' E! _        cout<<i<<endl<<j<<endl;, O  ]4 i$ ?0 E" y  c9 B
}+ O8 L2 n! x2 k) t; t
) S+ f5 r0 l$ X0 |- K" w, U! ?
CA::~CA()
4 f' P6 ]1 \. f{
. b/ ]- |* s& Y/ ]9 m3 [& c}
8 K/ b+ s6 x" }& B
9 g% K/ ]$ {, i9 {#include <iostream>7 S4 F0 T1 l) E5 j
using namespace std;$ k. b) C: [& s$ R8 X! J5 P
#include "复制构造函数工作原理.h"6 v, k* U" M* M2 l
int main(void){        8 @8 X. s  h* f- z$ ^
CA a(2,3);        
! |- j- E5 _1 Y6 Ya.print();      
- g+ e6 @. Q: I) k CA b(a);        9 |8 y0 p8 `: q4 ]
b.print();- k  m* [, c3 L1 D1 l
      
" a+ |9 Z( ?" _ return 0;
% f0 y# D! C- J; y}; R6 `) M' b) N7 u  L

3 {* `" _- w5 w+ {
% M. Q& A- H3 u: l& S9 w
0 _! J. m7 p3 \
! v" C4 M7 F& U5 @7 c; M( b5 x4 ?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
& }* b$ c, ]$ P# E1> 初始赋值时:CA b = a;
3 v! C2 z6 B/ i: R4 P2> 按值传参时:void myfun(CA ca);
5 c$ e; Q6 k$ p7 n6 r! d9 q6 T* i3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
7 C+ m. N6 P" f0 I" ?& Q
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-7-26 14:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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