using
关键字有两个主要用途:
1.类型别名:使用using
可以为类型创建新的名称,这在模板编程中尤其有用。
using integer = int;
integer a = 5; // 这里的integer就是int类型
2.命名空间:using
可以用来引入命名空间中的名字,或者是整个命名空间。
using namespace std; // 引入std命名空间
using std::cout; // 引入std命名空间中的cout名字
typename
关键字主要用在模板编程中,用来表明一个名字是一个类型。这在处理模板参数时尤其重要。
template <class T>
class MyClass {
typename T::SubType * ptr; // 这里typename用来表明T::SubType是一个类型
};
在这个例子中,typename
用来指示T::SubType
是一个类型。如果没有typename
,编译器可能会误认为SubType
是一个静态成员。
另外 模板中的模板类也可以使用typename,此时和class等价
template <class T, typename T2> // 这里typename用来表明T是一个类型,与前面的class等价
class MyClass {
T:* ptr;
};