鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑 * m% J' i$ ?- G; s4 W9 r% o" H

! G$ E. H' h% ]$ y" y3 K& Cclass CA
! _. P  m4 H( U{9 b) g) m2 C$ I9 Q: n3 Q2 e# i& Z
public:
- N3 w7 ]) `2 c        CA();( ^$ S% i5 f/ z& r% _6 I
        CA(CA&);, ~" D# f- B/ }  |+ j1 N) i: q
        CA(int ,int );; F. j3 H$ g( n. n& C# ~$ e
        ~CA();
- j; i) W4 a7 G  ~' f* D        void print();% G( Q) S* A! p3 K/ z5 s- q# @, Q# _

7 i% F: E. l& x' `private:( j7 \% R+ b4 |  [5 B# o
        int i;( t  `& d/ n: j" S+ Y+ C
        int j;  v% Z8 Y) u  J& G% w; |( K* l
};
- u1 X$ w4 `) d2 U4 Z3 H9 l) R# e7 r/ I  k+ F6 i! Q5 g% k. V
CA::CA()
4 T' N) \5 Z) m9 X5 Z{
: v  W" G, [3 x( _( Q) R* W( q) X}. A9 e8 K( W7 w" T
# w% B8 l" q, D5 D
CA::CA(CA&one)" h- n- w( j& _
{
) e+ y2 @: v$ T$ {* K        cout<<"调用复制构造函数"<<endl;
, n! Y# ?, o" l% T' x* d        this->i=one.i;
  R4 a6 K5 u# [* R$ ?; F! L        this->j=one.j;; O1 I  j9 e* A
}5 K! H8 J3 n6 U6 v5 r
/ P9 ^# I* m' |
CA::CA(int m,int n)
$ \2 x7 \! y! u/ t( O8 k! K{
( T" x& m, q* M5 a' f2 T        i=m;
. R% o- R0 H2 j        j=n;
* g+ D1 Z9 D; s3 d0 T+ a4 s! d% ?& ~}
% c0 M6 V3 T5 d( V) {
; H/ z  x4 G' W0 A6 y" rvoid CA::print()
; ]% l4 X7 A" O{
  j# X% P( l7 F7 O! b3 y        cout<<i<<endl<<j<<endl;8 o5 F3 J9 J* o9 S) h( k9 f0 f4 }
}8 R* c& |5 U$ \& W+ X; T

: u0 q, g2 |" J4 HCA::~CA()! M) o+ \) G" S5 r' [* ^# U
{
% ]) ^% k# {' |' V' W' S4 H0 ~# c}
  g1 W) O) K- m: X/ |. A- z
' n8 x# D, u$ f  ?#include <iostream>
# \( q) c: p7 P/ |9 Nusing namespace std;
5 m  x8 T' q/ p2 f#include "复制构造函数工作原理.h"
7 M6 i, y) a9 a+ S% tint main(void){        3 G) W  k8 l0 n- }* I4 S
CA a(2,3);        
, ~  a. e# }# za.print();      
3 H( F' L7 l) y CA b(a);        
" y% D# D! q' ?$ x& w" g$ i9 f1 ]b.print();! e3 {9 L$ m0 c0 ^0 J1 l& t; i
      
3 `' ?6 f( \0 `" f- @+ G return 0;
1 b+ R+ a/ _3 w# b}' B% A1 t1 Y" O6 I4 N7 b) Y: |

7 F+ L7 ]' Q, Y/ u- v, g, i& C$ }/ h1 E  e$ w

( E5 K7 `" P8 t
. P) @0 K. S7 {2 r9 L% t& d1 Z
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:
+ b/ {$ n3 D/ s& b1> 初始赋值时:CA b = a;; ~$ n" A. z: L7 G" p/ e
2> 按值传参时:void myfun(CA ca);
) X% X  Q1 {  M7 G3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层
kangels 发表于 2013-3-25 13:18
, P; E3 H/ f, h. x* f1 ~% D复制构造函数在以下几种情况下调用:
8 T  i- {( X+ W- a- J3 ~1> 初始赋值时:CA b = a;
* C$ M2 D. k6 j( p0 X2> 按值传参时:void myfun(CA ca);

0 e+ c! W0 B6 J/ ^7 G' Q  l) }第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-5-25 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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