cpp_milestone - ShenYj/ShenYj.github.io GitHub Wiki
年份 | C++标准 | 名称 |
---|---|---|
1998 | ISO/IEC 14882:1998 | C++98 |
2003 | ISO/IEC 14882:2003 | C++03 |
2011 | ISO/IEC 14882:2011 | C++11 |
2014 | ISO/IEC 14882:2014 | C++14 |
2017 | ISO/IEC 14882:2017 | C++17 |
2020 | Yet to be determined | C++20 |
- 可以从初始化表达式中推断出变量的类型,大大简化编程工作
- 属于编译器特性,不影响最终的机器码质量,不影响运行效率
auto i = 10; // int
auto str = "c++"; // const char *
auto p = new Person(); // Person *
p->run();
- 可以获取变量的类型
int a = 10;
decltype(a) b = 20; // int
空指针
- 可以解决 NULL 的二义性问题
NULL 在C++中其实就是一个宏定义 #define NULL 0
void func(int v) { }
void func(int *v) { }
// c98中上面两个函数都符合条件,相当于 func(0); 会存在二义性,c11开始 NULL 就被认为整数, 空指针使用 nullptr
func(NULL);
func(0);
func(nullptr);
cout << (NULL == nullptr) << endl; // 1
int array[] = { 11, 22, 33, 44, 55 };
for (int item: array) {
cout << item << endl;
}
int array[]{ 11, 22, 33, 44, 55 }
笔记:C++ Lambda
笔记:C++ Lambda
/// 变量 a、b 的作用域是它所在的if 语句、以及其后面的if-else语句
if (int a = 10; a > 10) {
/// 不可以访问变量b
a = 1;
} else if (int b = 20; a > 5 && b > 10) {
/// 可以访问变量b
b = 2;
a = 2;
} else if (0) {
/// 可以访问变量b
b = 3;
a = 3;
} else {
/// 可以访问变量b
b = 4;
a = 4;
}
/// 报错,外界无法使用 a
a = 20;