C++ typedef
来源:互联网 发布:淘宝怎么买枪暗号 编辑:程序博客网 时间:2024/06/03 14:49
typedef
提示#define AREA double 与typedef double AREA 可以达到相同的效果。但实质不同,#define为预编译处理命令,
主要定义常量,此常量可以为任何的字符及其组合,在编译之前,将此常量出现的所有位置,用其代表的字符或字符组合无条件的替换,
然后进行编译。typedef是为已知数据类型增加一个新名称
typedef struct
{
int a;
double b;
double c;
} aaa;
typedef struct tagPoint
{
int a;
int b;
int c;
} aaa;
typedef char * STRING;
typedef unsigned int COUNT;
提示#define AREA double 与typedef double AREA 可以达到相同的效果。但实质不同,#define为预编译处理命令,
主要定义常量,此常量可以为任何的字符及其组合,在编译之前,将此常量出现的所有位置,用其代表的字符或字符组合无条件的替换,
然后进行编译。typedef是为已知数据类型增加一个新名称
typedef struct
{
int a;
double b;
double c;
} aaa;
typedef struct tagPoint
{
int a;
int b;
int c;
} aaa;
typedef char * STRING;
typedef unsigned int COUNT;
typedef int (*FUN)(int a,int b);
-----------------------------------------------------------------------------------------------------------------------------------------------------------
转载于http://blog.csdn.net/zhangxiao93/article/details/50569924
typedef typename
C++的一些语法让人看着费解,其中就有:
- 1
- 1
详见《C++ Primer》(第五版)P584
有些不懂的语法有时候虽然知道大概是什么意思,忽略一下就过了其实,不过心里老是膈应,就刨根问底一次吧。
vector::size_type
明白上述语法,首先要先看清vector::size_type
的意思。参考《STL源码剖析》不难发现,其实:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
这样就看得很清晰了,vector::size_type
是vector
的嵌套类型定义,其实际等价于 size_t
类型。
也就是说:
- 1
- 2
- 3
- 1
- 2
- 3
为什么使用typename关键字
那么问题来了,为什么要加上typename关键字?
- 1
- 1
实际上,模板类型在实例化之前,编译器并不知道vector<T>::size_type
是什么东西,事实上一共有三种可能:
静态数据成员
静态成员函数
嵌套类型
那么此时typename
的作用就在此时体现出来了——定义就不再模棱两可。
总结
所以根据上述两条分析,
- 1
- 1
语句的真是面目是: typedef
创建了存在类型的别名,而typename
告诉编译器std::vector<T>::size_type
是一个类型而不是一个成员。
0 0
- c typedef
- c typedef
- c-typedef
- [c++] typedef
- 【C++】typedef
- C typedef
- C typedef
- C/C++:typedef关键字
- 【c/c++】关键字typedef
- c语言 typedef用法
- c语言typedef
- C语言:typedef
- C语言:typedef
- c/c++ typedef
- C语言 typedef类型
- C语言 ---- typedef
- C语言中的typedef
- 【C语言】23-typedef
- java 方法重载和方法重写
- 使用osmconvert转换pbf文件至osm文件
- Java基础的一些思考
- git mac使用初体验(三)
- ubuntu笔记1
- C++ typedef
- opengl介绍 webGL Open Inventor、Cosmo3D、Optimizer 3DLabs
- 机器学习面试知识点
- 代理Delegate的小应用(使用setModelData设置下拉日期对话框)
- KScope代码阅读、编辑工具
- Azure Messaging-ServiceBus Messaging消息队列技术系列6-消息回执
- 跨域资源共享 CORS 详解
- Android Studio在libs目录下添加jar包
- html限制输入(只允许输入数字字母等)