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++语言完全兼容的 ...
随机推荐
- 阅读笔记:Very Deep Convolutional Networks for Large-Scale Image Recognition
摘要: 在这篇论文我们主要研究卷积神级网络的深度对大范围图像识别效果的影响,我们发现增加神经网络层数增加到16-19层时我们的实验结果有很大的提高.这使得我们在2014年的ImageNet Chall ...
- 组合数取模及Lucas定理
引入: 组合数C(m,n)表示在m个不同的元素中取出n个元素(不要求有序),产生的方案数.定义式:C(m,n)=m!/(n!*(m-n)!)(并不会使用LaTex QAQ). 根据题目中对组合数的需要 ...
- Alternating Strings Gym - 100712D 简单dp && Alternating Strings II Gym - 100712L 数据结构优化dp
比赛链接:https://vjudge.net/contest/405905#problem/D 题意: 给你一个长度为n的由0或1构成的串s,你需要切割这个串,要求切割之后的每一个子串长度要小于等于 ...
- hdu 6806 Equal Sentences 找规律
题意: 给你一个有n个单词的单词串S,对这n个单词进行排列组合形成新的一个单词串T,如果在S中任意某个单词所在位置,和这个单词在T中所在位置之差的绝对值小于等于1,那么就说S和T串相等 让你求S一共有 ...
- Gym 100803G Flipping Parentheses
题目链接:http://codeforces.com/gym/100803/attachments/download/3816/20142015-acmicpc-asia-tokyo-regional ...
- JavaScript——匿名函数和闭包
匿名函数就是没有名字的函数 闭包就是一个函数中的另一个函数 函数可以不加分号,但是语句要加!! 可以把匿名函数的返回值赋值给变量!! box()时返回里面的函数,再加一个()就会返回里面那函数的值(浅 ...
- 由CloudStack项目引起的ESXI嵌套虚拟化引起的二级虚拟机无法被访问
关于这个问题,主要以文字描述为主,最终解决方法其实就一个步骤. 问题描述: 某客户需要部署某企业的云平台,但是由于年前没有足够的物理机资源,所以提供的资源均为虚拟机,现在让我们做技术评估. 其实观察整 ...
- 牛客多校第三场J LRU management(双向链表)题解
题意: 给一个长度为\(m\)的队列,现给定以下操作: \(opt=0\),插入一个串,如果不在队里直接插入栈尾,如果超出\(m\)删队首:在队里就拿出来重新放到队尾,返回\(v\)值. \(opt= ...
- O² & O₂
O² & O₂ special symbol O² & O₂ HTML HTML subscript and superscript Tags HTML 下标元素 HTML 上标元素 ...
- 2018 free pdf ebooks
2018 free pdf ebooks https://gist.github.com/xgqfrms-GitHub/f606efb0d4bce884c873518647e79f2f https:/ ...