摘要:
1. "智能指针"是行为像指针的对象,但它们能提供指针没有的功能:shared_ptr,weak_ptr,auto_ptr(见条款13)实现对堆内存的自动管理,STL的迭代器实现对整个容器的遍历等. C++内置类型指针(int*,char*等)的优势在于支持继承层次中派生类指针向基类指针的转换(当... 阅读全文
摘要:
1. template是节省时间和避免代码重复的有效方法,而且在将类模板(class template)具现化时,编译器只具现化那些被用到的成员函数,这更加节省了空间.2. 正如两个函数存在代码重复时,倾向于把重复的代码抽出独立形成一个函数,然后让之前的函数调用这个函数,函数模板也可以这样,甚至类模... 阅读全文
摘要:
1. 在继承模板基类时,C++拒绝在模板化基类(templatized base classes)内寻找继承而来的名称,例如,对于以下模板基类:templateclass Base{public: void fun(){ ... } ...private: ..... 阅读全文
摘要:
1. 在template的声明式中,typename的使用和class完全相同,即以下两种声明方式完全相同templatetemplate然而typename还有其他用途:指明嵌套从属类型名称.2. 嵌套从属类型名称:如果template中某个名称依赖于类型参数,那么它就是从属名称,如果这个从属名称... 阅读全文
摘要:
1. 面向对象编程通常以显式接口(类中的函数原型)和运行时多态(虚函数和RTTI)解决问题,但在Templates及泛型编程的世界,尽管显式接口和运行时多态仍然存在,但隐式接口和编译时多态的重要性却明显提升.2.通常显式接口由函数签名式构成,而隐式借口并不基于函数声明式,而是有有效表达式组成.所谓泛... 阅读全文
摘要:
1. 使用多重继承,派生类有可能从一个以上的基类继承相同名称,这回导致歧义.即使来自不同基类的相同名称各自的访问级别不同,也有仍然有可能造成歧义,因为C++的名称查找法则是先查找最佳匹配,然后再检查可取用性.可以使用作用域操作符明确指定所使用的名字属于那一个类.2. 如果多重继承继承的一个以上基类又... 阅读全文