
正文
Effective C++ .44 typename和class的不同
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在C++模板中的类型参数一般可以使用typename和class,两者没有什么不同。但是typename比class多项功能:
“任何时候当你想要在template中指涉一个嵌套从属类型名称,就必须在其前面加上关键字typename”
因为C++默认情况下把属性都作为值来看待而不是类型。
#include <iostream>
#include <cstdlib>class Integer {
public:
typedef int value_type;
};class Double {
public:
typedef double value_type;
};template<class DataType>
class Storage {
public:
typename DataType::value_type data;
};int main() {
Storage<Integer> s; s.data = 3.4/; std::cout<<s.data<<std::endl; return ;
}








