再多的天赋也战胜不了对细节的偏执
函数和变量定义消耗了内存,而声明却没有。
const int y;// 错误
如果一个常量没有值的话,它何以为常量呢?
作用域的主要作用是保持名字的局部性,不影响声明于其他地方的名字。
一个名字的作用域越大,名字就应该越长、越有描述性:将全局变量命名为x、y和f
是灾难性的。
C++还提供了一种语言特性:名字空间,专门用于表达作用域。
在函数声明和定义中,你可以为参数命名也可以不命名,完全取决于你的徐需求。
int my_find(vector<string>, string, int);
int my_find(vector<string>vs, string s, int hint);
由于不再使用,所以可以不为其命名:
int my_find(vector<string>vs, string s, int);
如果函数声明中指定要返回值,这函数体内必须通过teturn返回一个值。
传常量引用,其实就是拷贝初始化参数。
需要拷贝多有值
void print(vector<double>v)
void print(vector<double>&v)
引用是这样一种语法机制,它允许用户为一个对象声明一个新的名字。
int i = 7;
int&r = i; //r是i的引用
r = 9; // i变为9
i = 10;
如果我们只需要这个元素的值,那么可以声明下面这个变量
double val = v[f(x)][f(y)]; //val 是v[f(x)][f(y)]的值
如果我们既要从v[f(x)][f(y)]读取值,又要向他写入值,这时:
double& val = v[f(x)][f(y)]; //val 是v[f(x)][f(y)]的引用