鱼C论坛

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

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

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

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

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

x
本帖最后由 (@_@) 于 2013-3-21 10:43 编辑
$ h6 h7 }; Z8 ]! l+ u( L+ y" b4 L( j2 A$ g
class CA
' o9 r7 O6 R3 w! H{
) u$ S" s, z& P  D5 W1 jpublic:
, h5 T4 U6 y( W' [* d* X        CA();9 d" ^/ h/ X* V8 V% t2 t' q# `9 c
        CA(CA&);
+ Z. ^$ P( ?1 V& }        CA(int ,int );0 F5 A+ y* P8 }+ D
        ~CA();: n" O" c* k2 ^$ P! x1 ~
        void print();
6 z7 Z4 G. H  w1 j) }! E' x' ]" P. Y# a: v6 Y' n. h7 P, a
private:/ T5 l( S% ~& h) P0 J* S# P
        int i;0 s3 M) g! p3 M/ i: L
        int j;
( F5 v  `5 w) n1 W5 f};; s$ f5 i; T% G: d5 i" v
& v. s, s" ~; ~
CA::CA()' Q$ ]" @# \/ a9 v( {2 b+ @
{
/ Y8 }0 v5 x6 d6 ?}
. i+ R% y! p0 Y& k- r- X) U* Q! \* a
CA::CA(CA&one)
4 k( V5 z6 O+ H' V0 h  ?2 F) b{
. a: t5 Q! W2 q4 i, ]. \+ F        cout<<"调用复制构造函数"<<endl;( R9 j. ?3 u' \2 i; Y* \9 k% [, n
        this->i=one.i;; U2 g) ~' R' n5 }& y; {6 b
        this->j=one.j;' I$ @+ z* o; y! E( e' s3 M
}: g7 l$ h  x0 X
* I9 c: h2 i9 b: i# D$ }( Y
CA::CA(int m,int n)6 Y% o5 p* ?5 Z
{
' P" J# p. I# I" C6 V7 F        i=m;
  B# _5 d6 H# \; r# S% R! p        j=n;, B! Y9 z' K, O7 r1 Y9 _! \2 I
}/ R0 F+ {" y+ \5 K4 K# C

. r9 {1 O! e4 Avoid CA::print()
4 T* y# a1 ^. ~; g9 L; K! G. c* K{
# E0 f. I! O( ]' Y% l        cout<<i<<endl<<j<<endl;
9 w% B. B" \8 I  J) H; q, F}- e! W- l, g. D, O- @
& Q: s" K4 P0 K# Q5 T1 N3 }+ h
CA::~CA(). \& w& U) f) O$ x; p
{9 t1 E& q& }" V/ y5 k0 E
}
( {, Z- ^* j4 b
5 m3 [& @& C) R7 |- y5 Y9 _& g#include <iostream>! T2 p/ B9 c3 l1 x6 U* O
using namespace std;/ K& L" b7 u: K
#include "复制构造函数工作原理.h"
. M, l: i+ V" Y' }int main(void){        7 a6 L1 y+ F$ I# T* H9 {
CA a(2,3);        
; h. \' n5 w" u, Y8 z! @2 ra.print();       # |% @- G9 n. V2 W/ A
CA b(a);        
# L5 i& x6 F* H7 nb.print();
3 X- |1 z$ S3 I2 U% H. L" l& _5 g      
1 N* p; p/ Y" E) B5 {* B8 K return 0;
: d- b' V* X2 |# g# ]5 \1 b}, F0 g5 N7 d' x2 ?- l" D6 Y

) o- ?' @8 r2 ?& G5 t" A) J9 {
) n1 k0 p9 y- n, h5 |8 `& x( r0 g1 I0 p3 e

# D- W' O7 A7 m/ j" D0 M' b
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-25 13:18:31 | 显示全部楼层
复制构造函数在以下几种情况下调用:/ T% V5 h$ x3 D6 a
1> 初始赋值时:CA b = a;
9 D/ U7 s4 o. d" E7 w. Y2 Y/ U2> 按值传参时:void myfun(CA ca);
& {) ]5 c/ H; E, g3> 函数返回时:CA myfun2();
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-3-28 12:00:37 | 显示全部楼层

1 J7 S# a) b/ `4 H$ F. ?; c第一个应叫初始化,不叫赋值
小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-4-2 23:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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