需要注意求值顺序在很多时候是不确定的
我们把只存在于块执行期间的对象称为自动对象,当块执行结束后,自动对象销毁,值不在可靠.
如果一个函数永远也不会被用到,那么可以只声明但没有定义.
形参使用指针还是引用?都有可能为空,监测方案.建议使用引用代替指针?考虑!
尽量使用常量引用作为参数,这样const对象,字面值都可以传进来.
如果所有的实参类型都相同,可以传递一个名为initializer_list的标准库类型.
...参数,省略符参数,可以接受不定数量个参数
尾置返回类型 auto func(inti) -> int(*)[10];
decltype 推断类型,过程中不会实际运算执行被推断的表达式.
函数重载,所有重载的函数必须在相同的作用域中,否则将会屏蔽外层
void print(const string&);
void print(double);
void fooBar(int ival)
{
void print(int);
print(3);//不存在重载,因为在当前作用域中只有一个函数,屏蔽了外层名字.
}
默认实参,一旦某个形参被赋予了默认值,它后面所有的形参都必须有默认值
class some
{
int Proc(int c,int b = 5,int a);//error,b有默认参数,则后面的c也必须有默认实参.
}
在给定的作用域中一个形参最多只能被赋予一次默认实参,后续声明可以为之气那的没有默认值的形参添加默认实参.
string screen(int a = 5, int b, int c);
string screent(int a,int b = 6,int c);
局部变量不能作为默认实参,除此之外,只要表达式的类型能转换成形参所需要的类型,表达式就能作为默认实参.
constexpr 在编译时就能确定字面值的类型
内联函数和constexpr函数可以在程序中被多次定义
assert,类内部应该大量使用assert监测安全性、合法性,与类所接触的所有input输入,都应该检查,发现问题throw
__FILE__存放文件名的字符串字面值
__LINE__存放当前行号的整型字面值.
__TIME__编译时间
__DATE__编译日期
函数匹配,从候选函数中选出可执行函数