鱼C论坛

 找回密码
 立即注册
查看: 2246|回复: 0

[C++个人笔记] 隐式成员函数

[复制链接]
发表于 2013-3-13 12:12:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 kangels 于 2013-3-19 10:22 编辑
% g7 F; C$ S  Q6 \0 n
+ \  C" }+ f; b& {4 e1 CC++自动提供的成员函数  g4 f: Q! O* q4 R- E# a6 ~
    0 q7 `4 ?/ Y: \: V% D5 ~) Y1 u
  • 默认的构造函数,如果没有定义
  • 默认的析构函数,如果没有定义
  • 复制构造函数,如果没有定义
  • 赋值操作符,如果没有定义
  • 取址操作符,如果没有定义
    ' u  w1 f2 _+ y* r- b
1. 默认的构造函数
+ v* W" l# L) z: w. c& _如果没有默认的构造函数,C++将创建默认的构造函数,例如定义了一个base类,没有定义任何构造函数,则编译器将提供下述默认构造函数:0 e* h* r; k8 O/ V. p2 E) ]7 H
base::base(){}$ J3 r, ?9 \: U" X
也就是一个什么都不做的默认构造函数
, {- A* t- s1 e0 U: H
) u- c; ~0 P1 e8 e8 r2. 默认的析构函数, p6 Y7 ^6 {3 v, o: U
3. 复制构造函数% k6 _/ B  s/ r: @8 x
复制构造函数用于初始化,将一个对象复制到新创建的对象中,而不是常规的赋值过程中。4 p) Y. C) k0 ^+ D( y/ m5 g+ g. e
Class_name(const Class_name &)
' Z& d  _) Y* T  F* J. I( u! ^7 f<1> 何时调用复制构造函数
  V4 n) X5 |1 o/ b+ }新建 一个对象并将其初始化为同类现有对象时,复制构造函数都将被调用。: R, ]/ A  P3 }1 J6 ^% T
假设dog为animal类的一个对象,下面几种情况都将调用复制构造函数
' \% P  k8 @5 _animal cat = dog;# o- Y' p* S$ ]% o
animal pig(dog);
0 w! N0 ^8 L6 f' V4 panimal fish = animal(dog);/ {" |; z( A9 W9 ?
animal * pa = new animal(dog);
& a# O& S8 `  v6 a% T. D4 ^7 s每当程序生成对象副本时,编译器都将调用复制构造函数。
% ]: I- L- c( F8 m) pvoid I_love_eat(animal an);                            // 调用此函数时将生成实参的对象副本,将调用复制构造函数  g' S4 U9 A, Q& c1 x/ A6 J$ n
animal Big_bad_animal();                              // 此函数返回animal对象时将生成animal对象副本,也将调用复制构造函数
7 t' F; w: v4 H& Q* D: C8 [. u<2> 复制构造函数的功能。2 h. n2 ^3 Q$ R) {
默认的复制构造函数逐个复制非静态成员. }0 v, J2 c) n7 @4 t7 l
( x: D( s6 B8 ~
4. 赋值操作符# p2 ~% Z8 d: m7 r. x; t/ ~) j
ANSI C允许结构赋值,而C++允许类对象赋值,这是通过自动为类重载赋值操作符实现的。
" }* R5 I2 I' e! P, e2 i7 EClass_name & operator =(const Class_name &);
( D) \: j# ~$ c& q% p0 c<1> 何时使用赋值操作符
" f( @/ h- x( }' H将已有对象赋值给另一个同类对象时,将使用重载的赋值操作符。) R. a* R  k! T1 k4 t
<2> 赋值操作符的功能/ k: Q0 @. f4 U5 C8 q7 H; |
与复制构造函数相似,赋值操作符的隐式实现也对成员进行逐个复制。9 ]' |4 i# P% H
% K/ W  @& @% ?$ z
5 .取址操作符  \# q( q2 e! O# K" _; {7 _

评分

参与人数 1鱼币 +1 收起 理由
(@_@) + 1 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com

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

GMT+8, 2026-6-28 16:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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