《more effective c++》快读完时,才意识到应该做些笔记:
由于auto_ptr的copy constructor被调用时,对象拥有权转移了,所以以by value方式传递auto_ptrs往往是个非常糟的主意,因此STL容器中绝对不适合放置auto_ptrs。
Pass-by-reference-to-const才是适合的途径。
不要提供对dumb pointers的隐式转化操作符,除非不得已。
将一个struct嵌套放进一个Class的private段落内,可以很方便地让该class的所有members有权处理这个struct,而又能够禁止任何其他人访问这个struct,当然,class的friends不在此限。
class的实现细节不应该是客户关心的焦点,客户只对class的公开接口感兴趣。
编译器在const和non-const member functions之间的选择,只以“调用该函数的对象是否是const”为基准,并不考虑他们在什么情境下被调用。换句话说,operator[]重载,并不能因此区分其被读或被写状态。
将函数声明为纯虚函数,并非暗示它没有实现码,而是意味着:
目前这个class是抽象的;
任何继承此class之具象类,都必须将该纯虚函数重新声明为一个正常的虚函数,也就是说,不可以令它“=0”。
在一个程序中混用C和C++时,将双方都使用的函数声明为 extern "c",并确保你的C++和C编译器产出兼容的目标文件。如果可能,尽量在C++中撰写main。