[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;

你可能感兴趣的:(c++,c++)