一、decltype关键字
decltype是识别类型,用于定义,和sizeof相当,但不用来计算大小,也不用像auto一样定义初始值。
struct Student
{
char s_id[10];
char s_age;
}
int main()
{
int x=10;
sizeof(x);//4
decltype(x) a;//int
Student s1;
decltype(s1) s2;//Student
它是对括号里的表达式推导。
int main()
{
int x=10;
decltype(x) a;
decltype(++x) b=x;
decltype(x++) c=x;
cout<<x<<endl;
}
这里x是10,因为推导在编译时进行,不执行代码,只是推导出类型为int。
如果表达式返回的是参与运算的值本身,是引用类型
类型的名字和表达式中名字相一致
如果返回的是一个亡值,就是引用,如果是一个具体存在的值,就是它本来的值。
二、基于范围的for循环
在C98中,不同的容器和数组,遍历的方法不尽相同,写法不统一,也不够简洁,而C++11基于范围的for循环一统一简洁的方式遍历容器和数组,用起来更方便。
改进:
三、指针空值nullptr
nullptr是一个所谓的指针空值类型的常量。
虽然和NULL基本没有区别,但是 类型不同。
可以避免用NULL将整型与指针类型概念混淆。
四、typedef与using
typedef是将一切合法的变量定义转成类型声明
using是类型的重命名规则
好处是:using可以与模板 无缝衔接
五、String的简单使用
#include <string>//C++ stl string
#include<string.h>//c API函数
#include <cstring>//c API函数
前面带c就 被认为是C的函数库
所以,尽可能使用string。