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++语言完全兼容的 ...
随机推荐
- 【noi 2.6_9290】&【poj 2680】Computer Transformation(DP+高精度+重载运算符)
题意:给一个初始值1,每步操作将1替换为01,将0替换为10.问N步操作后有多少对连续的0. 解法:f[i]表示第i步后的答案.可以直接打表发现规律--奇数步后,f[i]=f[i-1]*2-1;偶数步 ...
- Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal (思维,逆序对)
题意:给你一个字符串,每次可以调换现字符串的相邻两个字符,问最少操作多少次使得这个字符串等于其反转过来的字符串. 题解:先考虑字符串中没有相同字符的情况,那么我们每次将目前字符串的最后一个字符一直调换 ...
- 7.PowerShell DSC之模式
DSC两种模式 DSC有两种模式,Push模式和Pull模式 Push模式 基本流程 写配置--编译生成mof--推送到目标服务器,由目标服务器LCM执行mof并进行指定的配置 优点 架构简单.成本低 ...
- 牛客网多校第4场 A.Ternary String 【欧拉降幂】
题目:戳这里 学习博客:戳这里 欧拉函数的性质: ① N是不为0的整数.φ(1)=1(唯一和1互质的数就是1本身) ② 除了N=2,φ(N)都是偶数. ③ 小于N且与N互质的所有数的和是φ(n)*n/ ...
- VS2010下如何查看类的内存布局
用VS2010查看类的内存布局,这里用两种方法 (1)MSVC有个隐藏的"/d1"开关,通过这个开关可以查看项目中类的内存布局情况. 修改项目属性,添加"/d1 repo ...
- vue-router离开当前页面提示未保存,解决在使用beforeRouteLeave弹窗多次闪现问题
在使用beforeRouteLeave时要注意两点: 1. next(false)阻止路由继续进行,若不先阻止,会多次执行守卫中的代码 2. 利用setTimeout延时触发弹窗,避免出现闪现情况
- Vue & Sentry sourcemaps All In One
Vue & Sentry sourcemaps All In One vue & sentry & sourcemaps https://docs.sentry.io/plat ...
- HTML <keygen> 标签(👎 已废弃)
HTML 标签( 已废弃) 该标签在新的 Web 标准中已废弃. <!DOCTYPE html> <html> <head> <meta charset=& ...
- VSCode Plugin & Auto File Header Comments Generator
VSCode Plugin & Auto File Header Comments Generator Xcode SwiftUI // // ContentView.swift // Mem ...
- redux 中间件 redux-saga 使用教程
redux 中间件 redux-saga 使用教程 redux middleware refs https://redux-saga.js.org/docs/ExternalResources.htm ...