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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java web 前端开发框架和流程「建议收藏」

    java web 前端开发框架和流程「建议收藏」1 通常JavaWeb开发框架举个例子,对于广告系统的来说,我们先不管一些job,byOminentShopperHelper”style=”color:rgb(59,115,175);border:none!important;display:inline-block!important;float:none!important;font-weight

    2022年7月9日
    28
  • java开发面试基础题_面试题 java

    java开发面试基础题_面试题 java一、对象的实例化1.创建对象的方式new:最常见的方式(本质是构造器)变形1:Xxx的静态方法变形2:XxBuilder/XxoxFactory的静态方法Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(Xxx):反射的方式,位于java.lang.reflect.Constructor可以调用空参、带参的构造器,权限没有要求使用clone():不调用任何构造器,当前类需

    2022年10月11日
    2
  • 表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码…

    表单构建html的页面代码,网页设计表单制作代码 制作一个很简单网页表单代码…CSS布局HTML小编今天和大家分享以下网页设计表格html代码CSS布局HTML小编今天和大家分享以下网页设计表格html代码急急急,下午要交作业了,编码大神救救我代码(大小有需要可以调):练习使用HTML运行效果:HTML5网页前端设计中如下图表单的代码怎么写?下面是表单代码,你直接再加属性就可以了,表单用table写比较简单,div太麻烦了;黑板用户注册页面用户名:密码:…

    2022年7月27日
    8
  • 伺服电机缺相什么现象_伺服驱动器三相220怎么接单相

    伺服电机缺相什么现象_伺服驱动器三相220怎么接单相 §01无刷电机驱动模块一、无刷电机▲图1.1拆开后的三相无刷电机驱动板

    2022年10月19日
    2
  • Matlab 非线性有约束规划的粒子群算法「建议收藏」

    Matlab 非线性有约束规划的粒子群算法「建议收藏」粒子群算法的基本认识简单介绍:通过群体中个体之间的协作和信息共享来寻找最优解。适用于连续函数极值问题,对于非线性,多峰问题均有较强的全局搜索能力。主要掌握两点1.粒子的速度和位置速度代表移动的快慢,位置代表移动的方向。位置对应每个自变量,速度一般设置为变量范围的10%~20%。2.粒子的更新规则具体实例下面展示matlab代码。clear;close;clc%%约束条件和目标函数构建fun=@(x)x(1)^2+x(2)^2+x(3)^2+8;bind1

    2022年6月1日
    44
  • ArchLinux的使用(1):安装

    ArchLinux的使用(1):安装

    2022年3月12日
    40

发表回复

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

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