C++ typedef typename 作用

C++ typedef typename 作用C 的一些语法让人看着费解 其中就有 typedeftypen vectorT size typesize type


C++ typedef typename 作用

C++的一些语法让人看着费解,其中就有:

typedef typename std::vector<T>::size_type size_type;

vector::size_type

明白上述语法,首先要先看清vector::size_type的意思。参考《STL源码剖析》不难发现,其实:

template <class T,class Alloc=alloc> class vector{ public: //... typedef size_t size_type; //... };

这样就看得很清晰了,vector::size_typevector的嵌套类型定义,其实际等价于 size_t类型。
也就是说:

vector<int>::size_type ssize; //就等价于 size_t ssize;

为什么使用typename关键字

那么问题来了,为什么要加上typename关键字?

typedef std::vector<T>::size_type size_type;//why not?

实际上,模板类型在实例化之前,编译器并不知道vector<T>::size_type是什么东西,事实上一共有三种可能:

那么此时typename的作用就在此时体现出来了——定义就不再模棱两可。


总结

所以根据上述两条分析,

typedef typename std::vector<T>::size_type size_type;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233540.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 理解GC

    理解GC

    2021年9月7日
    61
  • redis常见使用场景下PHP实现

    redis常见使用场景下PHP实现

    2021年10月10日
    40
  • 新网站500内部服务器错误,解决网站http服务器内部500错误[通俗易懂]

    新网站500内部服务器错误,解决网站http服务器内部500错误[通俗易懂]针对此问题关键解决办法:WEB站点右键属性——》目录(配置)–》选项–》启用父路径WEB站点目录要有iusr用户,并且iusr用户(如果是新建的用户也要给权限)要用读取、写入权限(如果里面不需要运行asp、php脚本就不需要给写入)2、一般情况如果客户端ie开启了查看程序错误,可以看到详细的错误,可以根据错误提示到百度搜索即可。3、针对iis访问量过大的原因,例如asp无法访问了,但php却可以…

    2022年8月12日
    5
  • 三菱plc编写最简单的梯形图演示_三菱plc梯形图实例详解

    三菱plc编写最简单的梯形图演示_三菱plc梯形图实例详解梯形图言语是一种以图形符号及图形符号在图中的彼此联络标明操控联络的编程言语,是从继电器电路图演化过来的。继电器操控电路图与plc操控的梯形图的比照梯形图与继电器操控电路图两者之间存在很多区别:(1)PLC选用梯形图编程是仿照继电器操控体系的标明方法,因而梯形图内各种元件也沿袭了继电器的叫法,称之为“软继电器”,例如X0、X1(输入继电器)、Y0(输出继电器)。梯形图中的“软继电器”不是物理继电器,…

    2025年10月25日
    3
  • 守护线程和非守护线程的区别以及用法_python多线程守护进程

    守护线程和非守护线程的区别以及用法_python多线程守护进程让程序更好的服务于逻辑

    2022年10月16日
    3
  • keil MDK5搭建STM32开发环境

    keil MDK5搭建STM32开发环境1.安装keil到keil的官方网站http://www.keil.com/download/product/下载MDK-ARM并安装,注意可以更改安装路径,但是不能安在需要管理员权限的文件夹,例如不能在ProgramFiles,否则会出现一些问题。2.注册未注测有代码容量限制,需要破解。网上找KEIL_Lic。3.安装器件包打开PackInstaller左边选择STMicro

    2022年5月10日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号