标签(空格分隔): cpp
声明和定义
声明:加关键字extern
定义只可以出现一次,而声明则可以出现多次。因为头文件包含在多个源文件中,所以不应该含有变量或函数
的定义。除了类、const对象(值已知)、inline函数
extern int ival = 10; // initializer, so it's a definition
double fica_rate; // no extern, so it's a definition
虽然 ival 声明为extern,但是它有初始化式,代表这条语句是一个定义。类似地,fica_rate的声明虽然没有初始化式,但也是一个定义,因为没有关键字 extern。同一个程序中有两个以上文件含有上述任一个定义都会导致多重定义链接错误。
避免多重包含
可以使用这些设施来预防多次包含同一头文件:
#ifndef SALESITEM_H
#define SALESITEM_H
// Definition of Sales_itemclass and related functions goes here
#endif
inline
C++ 中有些函数可以声明为内联(inline)函
数。编译器遇到内联函数时就会直接扩展相应代码,而不是进行实际的函数调用。
调用函数比求解等价表达式要慢得多。在大多数的机器上,调用函数都要做很多工作;调用前要先保存寄存器,并在返回时恢复;复制实参;程序还必须转向一个新位置执行。
cout << shorterString(s1, s2) << endl;
\\在编译时将展开为:
cout << (s1.size() < s2.size() ? s1 : s2)
<< endl;
将inline函数写入头文件