[c++11] using用法

为什么要引入using

using和typedef的作用都是为了,定义类型别名。既然有typedef了,为什么还要引入using呢?
答案:为了弥补typedef的不足。using 的别名语法也覆盖了 typedef 的全部功能,C+11标准鼓励用using,因为using比较直观。

using比typedef直观

// 重定义unsigned char

    typedef unsigned char   ty_uchar;
    using ty_uchar = unsigned char;

// 重定义函数指针

    typedef void (*ty_func)(int,double);
    using ty_func = void (*)(int, double);

从上面的对比中可以发现,C++11 的 using 别名语法比 typedef 更加清晰。using的写法把别名的名字放到了左边,而把别名指向的放在了右边,中间用 = 号等起来,非常清晰。

using可用于模板别名,而typedef不行

template <typename T>
using  ty_map_str = std::map<std::string, T>;

ty_map_str m_map;
如果使用typedef,编译报错

template <typename T>
typedef std::map<std::string, T> ty_map_str;

在这里插入图片描述
在 C++11之前不得不这样写:

template <typename _T>
struct ty_str_map
{
    typedef std::map<std::string, _T> map_type;
};

ty_str_map<int>::map_type m_map;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值