鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
  N0 X" r% |8 n6 }' b& H! _
4 a# u2 v; n4 f: p: a# P% F% eclass CA* N' w1 F! N/ G0 B
{
- b& ?  o: N  S% E5 v3 |- spublic:+ @/ W& Z9 k' q( X3 T
        CA();) }/ n/ {: t+ a7 [$ V8 C
        CA(CA&);, V1 @7 C, r3 {0 a8 r
        CA(int ,int );# T  `3 A/ J. V7 u) a( ?9 ?* W/ L
        ~CA();
) K' A" d: n- n        void print();
; Z+ D$ ~. A/ V( A9 ?1 }
* X& s3 Q" u. m* Tprivate:. r' B. V2 @& n8 {
        int i;
5 U, ]9 t9 p% v7 ^        int j;& E+ E& l, F2 K+ {
};  [6 O) @+ F3 P
4 F' Z/ R  @2 c4 D9 Y
CA::CA()& ~$ L6 j8 Y6 z& g5 y( j- u
{0 }; F* A; E( ?; t+ O
}
" I8 t6 I% T5 v
3 |+ i. f5 r, I' s: u) z0 MCA::CA(CA&one)
0 {: t9 {6 Z7 l$ O" t+ C{
& V) I# \6 M$ a0 I2 ^        cout<<"调用复制构造函数"<<endl;
1 P% L7 Y( k" J$ M# A% C; o( u        this->i=one.i;
( z+ r3 t! t' m        this->j=one.j;; F4 R  \) e, J. ~* B! j- }
}  W9 J% w/ v! O5 F3 L& P: k2 D. D, y- E( \
' l8 y8 F2 F  ^% [& M) ?6 V7 h
CA::CA(int m,int n)
2 u; V$ M1 p: R$ n* d+ I{
: y$ |* L: l6 P: ^* o  ~1 y* h" v        i=m;
" y  N* k1 [* u( z& R/ W        j=n;
8 V# V% j4 B- t5 F* m}
* X8 ], T& ?' O: R+ P- a1 Z4 o" F+ B: s7 X
void CA::print()
+ E# Y$ Y4 X% u6 J! ]{( y* H0 b, X% C5 a% _1 t
        cout<<i<<endl<<j<<endl;
0 B0 K7 |/ p3 A/ u' a' j; {}
3 q" u( S- Z9 g' a% t3 Y: z- h* D
CA::~CA()
8 t/ L1 `- c, s9 ~' \  Z{& C5 h8 _# c' S6 k
}
; j' x* j) q: j# w6 N2 B+ H, i/ |9 i6 P4 [+ ^9 ]7 I& I, h  b
#include <iostream>3 `2 ]2 z$ f/ d3 ^/ |6 V
using namespace std;6 s6 P+ ^0 p3 E: h6 \: n/ b
#include "复制构造函数工作原理.h"
3 O; X- q5 I( h8 \) c% w, ?% Lint main(void){        * t: s2 Y( p) X$ ~% B0 e* z
CA a(2,3);        1 i1 e* K2 @& }& Y6 S7 _8 Q
a.print();      
+ b% b! X3 X1 Z( I  ? CA b(a);        4 h) a* Z+ [6 W; N5 B; L
b.print();. s' @1 c1 a: y  }( U
      
2 [& n: t3 V# F; Q" | return 0;
3 i& v1 O  }1 z/ ^* t}4 y: m8 l8 P2 V1 v
# v8 o" H4 U" v% H

% f( s& P5 ]1 b- Z
5 V/ j) @1 P" e) E  Q: j& ?" x' i) S& L9 j3 k
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
. B/ A/ U7 j- K5 Z' I1> 初始赋值时:CA b = a;
6 n) S# C; L* O: v2> 按值传参时:void myfun(CA ca);& H/ k) @) t) ^. P* f: J
3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
5 q- P& d& Y' w* T4 D
第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2025-8-20 18:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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