C++多文件结构和预编译命令
下面随笔将给出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增1
14
15 cout <<"Point A: "<<a.getX()<<", "<<a.getY();
16
17 Point::showCount(); //输出对象个数
18
19 Point b(a); //定义对象b,其构造函数回使count增1
20
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
C++多文件结构和预编译命令的更多相关文章
- 预编译命令 #if DEBUG
在控制台程序根据预编译命令: http://www.askapache.com/windows/advanced-batch-scripting.html namespace SXGYCarTrans ...
- ASP.NET 预编译命令(解决发布后第一次访问慢问题)
ASP.NET 编译工具 (Aspnet_compiler.exe) 官方说明 新建bat文件 @echo off CD /d C:\Windows\Microsoft.NET\Framewo ...
- 【VS开发】C/C++预编译命令
C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令或预处理器.虽然它们实际上不是C语言的一部分,但却扩展了C程 序设计的环境. 预处理指令的主要作用就是把通过预处理的内建功能 ...
- .net 网站预编译命令
aspnet_compiler -v /Aspnet -p "C:\inetpub\wwwroot\a" C:\inetpub\wwwroot\a2 /Aspnet iis ...
- vs 预编译命令行
xcopy "$(SolutionDir)\Transight_FY_DataExchange_UI\CuscapiUpdaterServer.xml" /i /d /y
- (十八)C语言之预编译命令、宏
- 深入理解include预编译原理
http://ticktick.blog.51cto.com/823160/596179 你了解 #include 某个 .h 文件后,编译器做了哪些操作么? 你清楚为什么在 .h文件中定义函数实现的 ...
- Net预编译 真的好用与否
公司手机网站上千个 ASP.NET开发一套程序只是配置不一样,所有站点呈现的内容就不一样了, 以前的程序是ASP的,现在ASP程序猿少之又少了,所以公司要求转.NET,新开发也用NET.所有现在上千个 ...
- C预编译, 预处理, C/C++头文件, 编译控制,
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...
随机推荐
- 洛谷P4719 【模板】"动态 DP"&动态树分治
[模板]"动态 DP"&动态树分治 第一道动态\(DP\)的题,只会用树剖来做,全局平衡二叉树什么的就以后再学吧 所谓动态\(DP\),就是在原本的\(DP\)求解的问题上 ...
- 组合数取模及Lucas定理
引入: 组合数C(m,n)表示在m个不同的元素中取出n个元素(不要求有序),产生的方案数.定义式:C(m,n)=m!/(n!*(m-n)!)(并不会使用LaTex QAQ). 根据题目中对组合数的需要 ...
- hdu 6860 Fluctuation Limit 双向贪心
题意: 给你n个区间[li,ri],和一个整数k,你从每一个区间内选出来一个数,把从第i个区间内选出来数放在第i个位置,这样会构成一个长度为n的序列,你需要保证序列中任意两个相邻的数之差的绝对值要小于 ...
- codeforces 949B :A Leapfrog in the Array 找规律
题意: 现在给你一个n,表示有2*n-1个方格,第奇数方格上会有一个数字 1-n按顺序放.第偶数个方格上是没有数字的.变动规则是排在最后一个位置的数字,移动到它前边最近的空位 . 直到数字之间没有空位 ...
- C# TextBlock
TextBlock 适合长文本多行显示,Label可以看成是一个简短的单行的TextBlock,只是Label可以显示图片,TextBlock只能显示纯文本 默认的文本不会分行显示,超出窗体宽度的字符 ...
- redis运维与开发笔记
- μC/OS-III---I笔记12---任务管理
任务管理任务切换应该算是UCOS最基本的部分,首先保存当前任务寄存器的内容到当前任务的堆栈:接着弹出即将进行的任务的堆栈内容到寄存器中然后就是按寄存器内容执行,这个过程成为上下文切换.任务堆栈在创建任 ...
- LVS之DR模式部署
一.LVS-DR数据包流向分析 为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为1-2-3-41.Client 向目标 VIP 发出请求,Director(负载均衡器)接 ...
- vue 在有大数据量的 table 中使用弹窗 input 输入数据时卡顿解决方案
vue 在有大数据量的 table 中使用弹窗 input 输入数据时卡顿解决方案 原因:vue在进行输入时,进行了多次的render刷新渲染操作,导致了input框输入时发生的卡顿现象 解决方法:在 ...
- Python Web Framework All In One
Python Web Framework All In One Django and Flask are the top Python web frameworks so far. Django ht ...