类型别名--type alias

C++11引入了using关键字来定义类型别名,使得类型定义更加清晰易懂。文章通过对比typedef,阐述了using identifier=type-id的新语法,并展示了如何使用别名模板简化模板类型的声明,如 PTR<T> 作为 T* 的别名。同时,解释了别名模板不能直接引用自身类型的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        C++11中引入了新的类型别名定义方式

using identifier = type-id

         曾经在C++中定义类型的别名是采用

typedef identifier type-id;

        如果对于通常状况下的类型进行别名声明,两种方式没有区别,可能C++11新引入的方式比较容易理解 。传统的typedef可能会将原类型和新类型的位置弄混,采用=类似于赋值操作更好理解。


        别名模板        类型别名可以用于隐藏模板参数

// 这里PRT<const char>为const char*
template <class T>
using PTR = T*;
PTR<const char> str = "Hello World!";

// 少写几个int参数
template<class T>
struct Alloc { };
template<class T>
using Vec = vector<T, Alloc<T>>; // type-id is vector<T, Alloc<T>>
Vec<int> v; // Vec<int> is the same as vector<int, Alloc<int>>

        别名模板不能用自身的类型

template<class T>
struct A;
template<class T>
using B = typename A<T>::U; // type-id is A<T>::U
template<class T>
struct A { typedef B<T> U; };
B<short> b; // error: B<short> uses its own type via A<short>::U

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值