• 使用using与typedef来定义别名


    在C++中,using与typedef这两个关键词是大家用的比较多的,using关键词用的最多的是using namespace的搭配如using namespace std;而typedef用来设为某个类型设置一个别名,如typedef unsigned long long uint64;不过,可能有些不知道,其实using也可以用来设置别名,在这种情况下,它与typedef所表述的意思没有区别。使用using来设置一个别名方法如下:

    using uint64 = unsigned long long;

    C++标准上描述为:

    A typedef-name can also be introduced by analias-declaration. The identifier following the using keyword becomes atypedef-name and the optional attribute-specifier-seq following the identifierappertains to that typedef-name. It has the same semantics as if it wereintroduced by the typedef specifier. In particular, it does not define a newtype and it shall not appear in the type-id

     因此在普通的类型名定义时,理论上讲二者是没有区别的,当然,我们知道,还有一种方式定义类型别名,效果也是一样的,那就是#define。

    using与typedef在C++11标准以后对于模板类型别名声明有了一点区别。考虑到如下写法:

    template <typename T>
    typedef std::vector<T> v;//使用typedef
    
    
    template <typename T>
    using v = std::vector<T>;//使用using

    看起来好像是都可以的写法,但是使用typedef时,编译器会报错error: template declaration of ‘typedef’

    也就是说,C++编译器不支持使用typedef关键词为模板类设置别名,但是使用using的方式声明一个关键词却是允许的,只是这个是C++11标准才有的,如果在编译时不加上--std=c++11使用新的标准的话,编译器一样会报错。



  • 相关阅读:
    Android 禁止软键盘自动弹出
    Android之Adapter用法总结
    如何成为android高手
    最强大的文案策略
    外贸电商的ERP有很多
    ERP行业销售如何挖掘潜在客户?
    新制造
    C#实现字符串相似度算法
    cmd
    对于大型公司项目平台选择j2ee的几层认识
  • 原文地址:https://www.cnblogs.com/yutongqing/p/6794652.html
Copyright © 2020-2023  润新知