摘要:
函数typeid()返回值类型class type_info。其中type_info重载了操作符==, !=, =分别用来比较是否相等、不等、赋值。函数name()返回类型名称。class type_info {public: virtual ~type_info(); booloperator== (consttype_info& rhs) const; booloperator!= (consttype_info& rhs) const; boolbefore (consttype_info& rhs) const; constchar* name() const; 阅读全文
摘要:
下面的代码可以说明一切:默认情况下模板内的基本类型(int float ...)是不会自动初始化为0的(不像一般函数/类中),要想实现其自动初始化可以在模板函数中T x = T(); 在类中可以在构造函数列表中: x(), y()....#include <iostream>using namespace std;template <typename T>void f(const T&){ // T x = T(); //对比可知,此时输出为0,而下面输出为一个未知数 T x; cout<<x<<endl;}template <ty 阅读全文
摘要:
参考自《C++ Template》一书,解释得很详细,英语也比较简单应该可以看懂,如果看不懂得话可以找侯捷的翻译版本。 5.4 Template Template Parameters It can be useful to allow a template parameter itself to be a class template. Again, our stack class template can be used as an example. 模板参数列表里面可以存在模板,称之为模板参数模板。 To use a different internal container for st 阅读全文
摘要:
参考《Effective C++》条款42:Understand the two meaning of typenameTable of Contents1 模板参数列表中与class关键字可相互替换 2 嵌套从属名称(nested dependent names) 3 是嵌套从属名称但不用加typename的两种情况 1 模板参数列表中与class关键字可相互替换template<typename T>template<class T>是一样的2 嵌套从属名称(nested dependent names)假如template内出现的名称如果依赖于某个模板参数,则称其 阅读全文