1.
class A
{
public:
A();
};
class B
{
public:
explicit B(int x = 0, bool b = true);
};
class C
{
explicit C(int x);
};
void doSomething(B bObject);
B bOjj1;
doSomething(bOjj1);
B bOjj2(28);
// doSomething(28); //错误 B应该接受一个b,如果类B中去掉explicit,这样写可以程序自动把28转换成B类型的了
doSomething(B(28)); //没问题构造函数自动把int显示转换
除非我有一个好理由允许构造函数被用于隐式类型转换,否则我会把它声明为explicit,我鼓励你遵循相同的政策
2.
命名
GameCharacter *pgc;
// pgc = “ptr to GameCharacter”
3.
TR1式一份规范,描述加入c++标准程序库的诸多新机能
Boost是个组织,亦是个网站,提供可移植 同僚复审 源码开发的c++程序库
条款0.1
C++由4个组成 c, Object-Oriented C++ ,Template C++,STL
条款0.2
2.1如果定义常量指针的时候,为全局服务必须写2次const
const char * const authorName=”sfwefr”;
2.2
如果常量的作用域限制于class内,你必须让他成为class的一个成员;而为确保此常量至多一份实体,你必须让它成为一个static成员:
请记住:
对于单纯常量,最好以const对象或enums替换#defines
对于形式函数的宏,最好改用inlin函数替换#defines
条款0.3
(不是很理解)
条款 0.4
2.构造/析构/赋值运算
条款0.5
条款0.6
条款0.7
条款0.9在析构和析构期间不要调用virtual函数。程序在执行的时候会先调用基类的构造函数,因为在基类构造函数中调用了虚函数,此时派生类中的成员变量没有初始化,虚函数中的成员没有初始化。此时编译器就会报错。
条款10令赋值操作符返回一个referenceto *this
条款11在opertaor=中处理“自我赋值“。有4版本:1.直接删除2.证同测试3.记住原先的pb(指针)4.使用copy和swap技术。基类或派生类的引用或指针可以指向同一个对象。
条款12复制对象时勿忘其每一个成分。派生类的拷贝构造函数和拷贝赋值操作符没有操作基类的。引入第三者,并由连个coping函数共同调用
3.资源管理
条款16成对使用new和delect时要采取相同的形式
条款17以独立语句将newed对象置入智能指针
4.设计与声明
条款18
已经看懂
条款22
5.实现
条款26尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率
条款27
条款30
条款31将文件间的依存关系降至最低
6.继承与面向对象设计
条款34 区分接口继承和实现继承。在设计的时候仔细考虑。
条款36绝对不要重新定义继承而来的non-virtual函数
条款37 绝不重新定义继承而来的缺省参数值。静态绑定又名前期绑定,动态绑定又名后期绑定。
father *pf;
father *pc1= new child;
pf静态类型是father 没有动态类型
pc1静态类型是father动态类型是child
virtual函数是动态绑定,而缺省参数值却是静态绑定。可能会赋基类中的缺省值。(具体见条款37,181-182部分)
7.模版与范型编程(这一章看起来比较吃力,过几个月再去仔细看)
条款41了解隐式接口和编译期多态
显式接口:就是它在源码中明确可见的,显示接口由函数的签名式构成。
隐式接口:是由有效表达式组成。
Class 接口式显式的,template接口是隐式的
条款42了解typename的双重定义
条款43学习处理模版化基类内的名称(挺有用的)
派生类内通过”this->”指涉基类内的成员名称
条款44 将于参数无关的代码抽离templates
条款45
条款46
条款47
条款48
TMP模版元编程
8.定制new和delete
条款51了解new和delete的合理替换时机
条款53不要轻忽编译器的警告。除非有些警告你很清楚为什么会这样
条款54 让自己熟悉TR1(technical report 1)在内的标准程序库
标准程序库包括:
stl
iostreams
国际化支持,包括多区域能力。(不了解)
数值处理,包括复数模板和纯数组
异常阶段体系(不了解)
c89标准程序库。
TR1中的14格新组件:
智能指针: tr1::shared_ptr,tr1::weak_ptr
tr1::function: 表示任何的函数或函数对象
tr1::bind 能够做stl绑定器所做的每一件事
(还有一些,不是很重要)
条款55 让再见熟悉Boost
Boost是一个社群,也是一个网站。致力于免费.源码开放。同僚复审的c++程序开发。