摘要: 一、关键点 虚析构函数的必要性(为何需要?哪里需要?) 虚构函数的特性 二、虚析构函数的必要性 基类通常应该定义一个虚析构函数(当然不是必须要虚析构函数),这是继承关系对基类拷贝控制最直接的影响 为何需要:这样我们就能动态分配继承体系中的对象,如delete一个指向派生类对象的基类指针时,虚析构函数 阅读全文
posted @ 2017-11-16 23:03 GGBeng 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 一、概述 手工初始化内置类型对象 构造函数的成员初始化列表 static对象的初始化:包括non-local static和local static 二、细节 1. 你的构造函数使用了成员初始值列表了咩 不使用初始值列表: 使用初始值列表: C++规定,对象的成员变量的初始化动作发生在进入构造函数体 阅读全文
posted @ 2017-11-16 18:24 GGBeng 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 一、概述 使用const约束对象:可以获得编译器的帮助(指出相关出错的地方) const与成员函数:const重载、转型、避免代码重复 二、细节 1. 为什么有些函数要返回const对象(看上去没必要)? 返回const对象:a * b = c; //operator*()函数返回一个const对象 阅读全文
posted @ 2017-11-16 18:05 GGBeng 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 一、概述 尽量少用预处理器——宏替换 二、细节 1. 关于宏替换之常量 旧版本:#define N 10; 新版本:const int n = 10; 比较:#define不被视为语言的一部分,记号名称N在编译器开始处理源代码之前就被预处理器移走了。 补充:class的专属常量需要封装性,而#def 阅读全文
posted @ 2017-11-16 11:56 GGBeng 阅读(205) 评论(0) 推荐(0) 编辑