处理类型(typedef,uisng,auto,decltype)

一:类型别名是一个名字,它是某种类型的定价。有两种方法定义类型别名:

1.使用typedef关键字,如:

typedef int *Int_Ptr

Int_Ptr p=nullptr;   //Int_Ptr是一个int指针类型,这里定义了一个int型指针P

2.使用别名声明(使用using).如:

using Int_Ptr=int*;

Int_Ptr p=nullptr;   //与上面完全一样

二:auto类型说明符

编程时,常常需要把表达式的值赋给变量,于是就要求在声明变量时必须知道表达式的类型。然而有的时候并不容易知道表达式的类型。c++11中引入了auto类型说明符,用它就可以让编译器与分析变量的具体类型:

int i=3,j=4;

auto item=i+j;  //这时候编译器检验i+j得到的是一个整型,于是auto推断出了item是整型。

使用auto也可以在一条语句中声明多个变量,因为一条语句中最多只有一个数据类型,所以该语句中所有变量初始化必须是一样的:

auto a=2.23,b=0.25;  //正确,a,b都是double类型

atuto c=5,d=2.9 ;     //错误,c,d类型不同

三:

时间: 2025-01-23 22:13:05

处理类型(typedef,uisng,auto,decltype)的相关文章

类型别名、auto类型说明符和decltype类型说明符初探

类型别名 类型别名顾名思义是某种类型的另一个名字,常用于简化类型,易于理解和使用. 传统方法是使用关键字 typedef .新标准规定使用别名声明(alias declaration)来定义类型别名. using zhengxing = int; 如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句中往往会让人理解出错. typedef char *cstring;//cstring 是 char* 的别名 const cstring cstr = 0;//cstr 是指向 char 的

C++ 11 学习1:类型自动推导 auto和decltype

Cocos 3.x 用了大量的C++ 11 的东西,所以作为一个C++忠实粉丝,有必要对C++ 11进行一个系统的学习. 使用C++11之前,一定要注意自己使用的编译器对C++11的支持情况,有些编译器并不是完全支持,比如我正在使用的vs2012.这里是msdn里面VS各版本对C++ 11 的支持 对 C++11 功能的支持(现代 C++) 1.auto auto这个关键字C++原先就有,用来指定存储器.因为很少有人去用这个东西,所以在C++11中就把原有的auto功能给废弃掉了,而变成了现在的

类型别名,auto,decltype

1.类型别名 类型别名是某种类型的同义词. 1 int main() 2 { 3 typedef char *ps; // ps是类型char*的别名 4 const ps p1 = 0; // p1是指向char的常量指针 5 const ps *p2; // p2是一个指针,它的对象是指向char的常量指针 6 return 0; 7 } 注意:遇到使用了类型别名的声明语句时,人们往往会错误地尝试把类型别名替换成它本来的样子去理解,这种理解方法是错误的:要将类型别名看成是一个基本数据类型去理

c++11——auto,decltype类型推导

c++11中引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能够方便的获取复杂的类型,而且还能简化书写,提高编码效率.     auto和decltype的类型推导都是编译器在编译的时候完成的,auto是通过定义auto变量时候给出的表达式的值推导出实际类型,并且在声明auto变量时必须马上初始化:decltype通过表达式的值推导出实际的类型,但是可以只声明变量,而不赋值. auto类型推导 1. auto推导 auto x = 5; //被编译器推导为int类型 au

C++ 11常见功能介绍:auto,decltype,nullptr,for,lambda

什么是C++11 C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外). C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto.decltype,和模板的大量改进. 本文将对C++11的以上新特性进行简单的讲解,以便大家能够快速了解到C++11对C++的易用性方面祈祷的巨大作用. 如果您觉得

C++ 声明新类型 typedef

在C++中,除了可以声明结构体.共用体.枚举等类型外,还可以用typedef声明一个新的类型名来代替已有的类型如: typedef int INTEGER;  //指定用标识符INTEGER代表int类型 typedef float REAL;  //指定用REAL代表float类型 这样,以下两行等价: int i,j; float a,b; INTEGER i,j; REAL a,b; 这样可以使熟悉FORTRAN的人能用INTEGER和REAL定义变量,以适应他们的习惯. 如果在一个程序中

c++学习笔记2--constexpr,类型别名,auto

---恢复内容开始--- constexpr:修饰常量表达式,约定修饰对象不仅为常量,而且在编译阶段就能得到值. 与const不同的是,constexpr约束的是当事人,就是说,constexpr int *a=1;这样的语句,a指针本身是const,并且右边也足够简单,而const int*a:这样的语句,则约定了a指向对象是const,这是不同点.constexpr直接限定为顶层const. 类型别名:传统的是typedef, typedef double a; a b = 1.1; 类似这

C++11之auto和decltype

auto自动类型推断,用于从初始表达式中推断出变量的类型. auto a; // 错误,没有初始化表达式,无法推断出a的类型 auto int a = 10; // 错误,auto临时变量的语义在C++ 11中已不存在 auto a = 10; auto c = 'A'; auto s("hello"); vector<int> vctTemp; auto it = vctTemp.begin(); auto ptr = [](){ cout << "

C++11:类型推导和追踪函数返回类型decltype

参考文章:https://blogs.oracle.com/pcarlini/entry/c_11_tidbits_decltype_part decltype 是 GCC 实现的第一个 C++ 11 新特性.它实际上起源于一个相当古老的 GNU 扩展关键字-- __typeof__.这个非标准关键字也能够在 C 语言中使用,GNU Compiler Collection 的专业用户可能对它更熟悉一些.2008 年,GCC 4.3.x 就实现了这个特性,同时去除了 __typeof__ 的一些缺