C++是一种静态数据类型语言:它的类型检查发生在编译时。
Unicode字符集:用于表示所有自然语言中字符的标准,类型char16_t和char32_t为之服务。
浮点数运算:尽量选用double,原因是float通常精度不够而且二者的计算代价相差无几。
编程建议:尽量避免依赖于实现环境的行为,参考#ifdef的用法。
列表初始化:在C++11中,用花括号来初始化变量得到了全面的应用。其重要特点:若使用初始值存在丢失信息的风险,编译器将报错。
默认初始化:如果定义变量时没有指定初始值,则变量被默认初始化。默认值到底是什么由变量类型和变量定义的位置决定。内置类型:未被显示初始化则其值由定义位置决定,定义于任何函数体之外的变量被初始化为0,定义在函数体内部的变量不被初始化,其值是未定义的。一些类要求每个对象都显示初始化。
分离式编译:C++允许将程序分割为多个文件,每个文件可被独立编译。
变量的声明与定义:变量能且只能被定义一次,但是可以被多次声明。
标识符:长度没有限制。
嵌套的作用域:当作用域操作符的左侧为空时,向全局作用域发出请求获取作用域操作符右侧名字对应的变量。
空指针:C++11标准下,尽量使用nullptr,避免使用NULL。
const变量:默认状态下,const对象仅在文件内有效。若多个文件定义了同名const对象,等同于在每个文件中分别定义了独立的变量。解决办法是在声明和定义const变量时都添加extern关键字。
constexpr变量:C++11允许变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。一般如果程序员认为变量是一个常量表达式那就把它声明为constexpr类型。
auto类型说明:C++11引入auto类型说明符,就是让编译器替我们去分析表达式所属的类型。
decltype类型指示符:作用是选择并返回操作数的数据类型。p是int *,decltype(*p)的结果类型是int&,而非int。decltype的表达式如果是加上了括号的变量,得到的将是引用:i是int,decltype(i)得到的是int,decltype((i))得到的是int&。
类内初始值:C++11可以为class或struct数据成员提供一个类内初始值。但是不能使用圆括号完成初始化,只能用等号或者花括符。
Unicode字符集:用于表示所有自然语言中字符的标准,类型char16_t和char32_t为之服务。
浮点数运算:尽量选用double,原因是float通常精度不够而且二者的计算代价相差无几。
编程建议:尽量避免依赖于实现环境的行为,参考#ifdef的用法。
列表初始化:在C++11中,用花括号来初始化变量得到了全面的应用。其重要特点:若使用初始值存在丢失信息的风险,编译器将报错。
默认初始化:如果定义变量时没有指定初始值,则变量被默认初始化。默认值到底是什么由变量类型和变量定义的位置决定。内置类型:未被显示初始化则其值由定义位置决定,定义于任何函数体之外的变量被初始化为0,定义在函数体内部的变量不被初始化,其值是未定义的。一些类要求每个对象都显示初始化。
分离式编译:C++允许将程序分割为多个文件,每个文件可被独立编译。
变量的声明与定义:变量能且只能被定义一次,但是可以被多次声明。
标识符:长度没有限制。
嵌套的作用域:当作用域操作符的左侧为空时,向全局作用域发出请求获取作用域操作符右侧名字对应的变量。
空指针:C++11标准下,尽量使用nullptr,避免使用NULL。
const变量:默认状态下,const对象仅在文件内有效。若多个文件定义了同名const对象,等同于在每个文件中分别定义了独立的变量。解决办法是在声明和定义const变量时都添加extern关键字。
constexpr变量:C++11允许变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。一般如果程序员认为变量是一个常量表达式那就把它声明为constexpr类型。
auto类型说明:C++11引入auto类型说明符,就是让编译器替我们去分析表达式所属的类型。
decltype类型指示符:作用是选择并返回操作数的数据类型。p是int *,decltype(*p)的结果类型是int&,而非int。decltype的表达式如果是加上了括号的变量,得到的将是引用:i是int,decltype(i)得到的是int,decltype((i))得到的是int&。
类内初始值:C++11可以为class或struct数据成员提供一个类内初始值。但是不能使用圆括号完成初始化,只能用等号或者花括符。