下面随笔将给出C++多文件结构和预编译命令细节。
多文件结构和编译预处理命令
c++程序的一般组织结构
一个工程可以划分多个源文件
类声明文件(.h文件)
类实现文件(.cpp文件)
类的使用文件(main()所在.cpp文件)
利用工程来组合各个文件
多文件工程举例
1 //文件1,类的定义,Point.h 2 3 class Point { //类的定义 4 5 public: //外部接口 6 7 Point(int x = 0, int y = 0) : x(x), y(y) { count++; } 8 9 Point(const Point &p);10 11 ~Point() { count--; }12 13 int getX() const { return x; }14 15 int getY() const { return y; }16 17 static void showCount(); //静态函数成员18 19 private: //私有数据成员20 21 int x, y;22 23 static int count; //静态数据成员24 25 };
1 //文件2,类的实现,Point.cpp 2 3 #include "Point.h" 4 5 #include <iostream> 6 7 using namespace std; 8 9 10 11 int Point::count = 0; //使用类名初始化静态数据成员12 13 14 15 Point::Point(const Point &p) : x(p.x), y(p.y) {16 17 count++;18 19 }20 21 22 23 void Point::showCount() {24 25 cout << " Object count = " << count << endl;26 27 }
1 //文件3,主函数,5_10.cpp 2 3 #include "Point.h" 4 5 #include <iostream> 6 7 using namespace std; 8 9 10 11 int main() {12 13 Point a(4, 5); //定义对象a,其构造函数使count增114 15 cout <<"Point A: "<<a.getX()<<", "<<a.getY();16 17 Point::showCount(); //输出对象个数18 19 Point b(a); //定义对象b,其构造函数回使count增120 21 cout <<"Point B: "<<b.getX()<<", "<<b.getY();22 23 Point::showCount(); //输出对象个数24 25 return 0;26 27 }
条件编译指令——#if 和 #endif
#if 常量表达式
//当“ 常量表达式”非零时编译
程序正文
#endif
......
条件编译指令——#else
#if 常量表达式
//当“ 常量表达式”非零时编译
程序正文1
#else
//当“ 常量表达式”为零时编译
程序正文2
#endif
条件编译指令——#elif
#if 常量表达式1
程序正文1 //当“ 常量表达式1”非零时编译
#elif 常量表达式2
程序正文2 //当“ 常量表达式2”非零时编译
#else
程序正文3 //其他情况下编译
#endif
条件编译指令
#ifdef 标识符
程序段1
#else
程序段2
#endif