第9章 内存模型和名称空间 1. 头文件常包含的内容: 函数原型. 使用#define或const定义的符号常量. 结构声明. 类声明. 模板声明. 内联函数. 2. 如果文件名被包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找.但如果头文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录(或其他目录,这取决于编译器).如果没有在那里找到头文件,则将在标准位置中查找.因此在包含自己的头文件时,应使用引号而不是尖括号. 3. 链接程序将目标文件代码.库代码和…
C++鼓励程序员在开发程序时使用多个文件.一种有效的组织策略是,使用头文件来定义用户类型,为操纵用户类型的函数提供函数原型,并将函数定义放在一个独立的源代码文件中.头文件和源代码文件一起定义和实现了用户定义的类型及其使用方式.最后,将main()和其他使用这些函数的函数放在第三个文件中.C++的存储方案决定了变量保留在内存中的事件(存储持续性)以及程序的哪一部分可以访问它(作用域和链接性).自动变量在代码块(如函数体或函数体中的代码块)中定义的变量,仅当程序执行到包含定义的代码块时,它们才存在,…
1. 单独编译 1.1 头文件中常包含的内容: 函数原型 使用#define或const定义的符号常量 结构声明 类声明 模板声明 内联声明 1.2 只需将源代码文件加入到项目中,而不用加入头文件.这是因为用#include管理头文件. 1.3 避免多次包含同一个头文件 #ifndef COORDIN_H_ #define COORDIN_H_ // place include file contents here #endif 2. 存储持续性.作用域和链接性 1. 存储方案: 自动存储持续性…
第九章 内存模型和名称空间 1.不要将函数定义或者变量声明放到头文件中. 2.头文件常包含的内容:函数原型.使用#define或者const定义的常量.结构声明.类声明.模板声明.内联函数. 3.避免多次包含同一个头文件的技术:#ifndef/#endif.仅当以前没有使用预处理器编译指令#define定义一个头文件名称时,才处理#ifndef和#endif之间的语句. 4.链接性描述了名称如何在不同单元间共享.链接性为外部的名称可在文件间共享,链接性为内部的名称只能由一个文件中的函数共享.自动…
程序清单9.9(静态存储连续性.无链接性) #include<iostream> using namespace std; ; void strcount(const char *str){//const表示str指针不能修改指向的内容(不过可以指向另外一块内容) ;//static静态变量,首次初始化后,其值一直存在(即第二次调用strcount函数时,total的值不会再次初始化) ; cout<<"\""<<str<<&q…
程序清单8.1(inline内联函数) #include<iostream> using namespace std; inline double square(double x) {//inline表示内联函数 return x*x; } void main() { double a, b, c = 13.0; a = square(5.0); b = square(4.5+7.5); cout << "a=" << a << &quo…
程序清单4.1 #include<iostream> using namespace std; void main(){ ]; yams[]=; yams[]=; yams[]=; ]={,,}; cout<<]+yams[]+yams[]<<endl; cout<<]<<]<<" cents per yam"<<endl; cout<<]*yams_cost[]+yams[]*yams_c…
一.单独编译 头文件 不要将函数定义或者变量声明放到头文件中,引入多个文件时可能会造成同一个函数定义多次 引入头文件 #include "文件名" File1.h #ifndef FILE1_H_ #define FILE1_H_ struct Student { int age; }; #endif // !FILE1_H_ File2.h #include "File1.h" main.cpp #include<iostream> #include…
一.复习题 2.using声明和using编译指令的区别 using声明: using std::cin; using std::cout; using std::endl; using编译指令:using namespace std; 二.编程练习   头文件golf.h ; struct golf { char fullname[Len]; int handicap; }; void setgolf(golf &g,const char * name,int hc); int setgolf…
1.作用域和链接 int num3; static int num4; int main() { } void func1() { static int num1; int num2; } 上边的代码中num1 和num2 只适用于func1,区别在于num1 在func1没有被调用时也存在于内存中. num4 只适用于当前文件. 2.说明符和限定符 一个比较特殊的  mutable .对于某些使用const变量被修改,例如 struct node { int num1; mutable int…