编写一个c++工程
c++接触的很少,之前也只是会编写一个简单的cpp文件,但一个工程的实现,往往不仅包括源文件(.cpp后缀文件)一般还有头文件(.h后缀文件)等。一个c++工程中只能有一个main函数,这个函数所在的文件类似于前端中的入口文件,即从main函数开始执行整个工程。即有多个cpp文件,这些文件中也只有一个入口文件
说明,这里可以使用微软的visual studio进行编译运行,但实际在使用的过程中,可能vs反应很慢,所以,我们可以减少vs的一些不必要的功能。比如进入 工具 -> 选项 -> 源代码管理 -> 源代码管理插件 修改为无,另外,也可以在选项中将visual studio定期进行的更新关闭,或者其他一些没有必要的辅助功能都是可以关闭的,以增加运行效率。
基本概念之头文件
头文件就是.h后缀结尾的文件。 如下所示,是一个头文件:
#ifndef __OUTFILE_FRAMEDATA_H__
#define __OUTFILE_FRAMEDATA_H__ #include "outfile.h" class Outfile_framedata : public Outfile
{
private:
FILE *pFile;
int frameCount;
int num_of_dots;
int recordlength; void FWriteInt(FILE* fp, int val);
void FWriteFloat(FILE* fp, double val);
void FWriteString(FILE* fp,const char* str); public:
Outfile_framedata(const char* file, int Nx, int Ny);
~Outfile_framedata(void);
void writeFrame(double **matrix, int Nx, int Ny);
}; #endif
从这个文件中我们可以看出头文件的一些特点:
- 定义了类,包括类的变量和方法,但是方法只是声明,具体语句没有写。
- #ifndef 即if not define的缩写,意思是如果没有定义。
- #define 那么就定义。
- #endif 结束if
- 而上面三个必要语句的作用就是可能会有多个cpp文件使用这个头文件(头文件也有可复用的作用),如果这个头文件没有被编译,就会进行编译,否则,就不需要再编译了,起了防止重复编译的作用。
头文件必须要有下面的几个语句。 且一般要求后面的文件前后有__来作为补充,另外要求英文字母全部大写,比如这个例子中这个.h文件名称为outfile_framedata.h。
基本概念之源文件
源文件是工程中最重要的部分。 一般源文件的开头会引用头文件,如使用#include的方式进行引用 。
c++工程

如上,我们建立了一个project工程(使用visual studio 2013)。 通过源文件上右键,就可以添加源文件,其他类似。
如下所示,这是我们建立的文件。

circle.h源代码如下所示:
#ifndef __CIRCLE_H__
#define __CIRCLE_H__ class Circle
{
private:
double r; // 半径 public:
Circle(); // 构造函数
Circle(double R); // 构造函数
double Area(); // 求面积函数 }; #endif
这个文件中就是定义了Circle这个类以及类中的私有变量和一些函数,而函数具体的语句是不需要写的。
circle.cpp文件如下所示:
#include <iostream>
#include "circle.h" Circle::Circle()
{
this->r = ;
} Circle::Circle(double R)
{
this->r = R;
} double Circle::Area()
{
return 3.14 * r * r;
}
这个文件当中,我们将circle.h中未定义的函数进行了定义包括两个构造函数以及一个计算圆面积的函数。注意文件头要引入circle.h文件。
注意:构造函数的作用是为了初始化工作,而析构函数是为了释放内存空间。一般,一个类可以有多个构造函数,但却只能有一个析构函数。如果类中没有自定义的析构函数,就会调用默认的析构函数完成清理工作,释放堆中分配的内存。
main.cpp文件如下:
#include <iostream>
#include "circle.h"
using namespace std;
void test(double a);
int main()
{
double a = 1.0;
cout << "Please input the circle raduis: " << endl;
cin >> a;
test(a);
Circle c(a);
cout << "the area of the circle is : " << c.Area() << endl;
return ;
}
void test(double a)
{
try
{
if (a < )
{
throw ;
}
}
catch (int)
{
cerr << "the number " << a << " is not fit for this!" << endl;
exit();
}
}
这个文件中,我们同样需要引入头文件 circle.h, 而不需要引入 circle.cpp,这个工程的入口文件就是main.cpp。 注意: 文件中 test是用于处理c++程序异常的。
ctrl + F5可以执行整个工程,最终执行效果如下所示:


ok,这就是一个最为基本的c++工程了。
打开工程文件
选择 文件 - 打开 - 项目/解决方案,然后找到对应文件的 vcxproj 后缀文件即可在 visual studio 中打开此工程。然后ctrl + F5即可运行。
编写一个c++工程的更多相关文章
- Android For JNI(六)——交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程
Android For JNI(六)--交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程 终于回到我们的 android了,我们先要配置这个NDK的环境,但是之前,我们还要了解一下基本的术 ...
- Eclipse中一个Maven工程的目录结构
在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己 ...
- 编写一个小Servlet程序
1.编写一个java类,此类继承HttpServlet 创建完工程(见上一篇随笔:使用eclipse创建在myeclipse中运行的web工程),在src中新建一个包,包名字叫servlet:再新建一 ...
- android JNI (二) 第一个 android工程
下载NDK 后 它自带有 sample,初学者 可以导入Eclipse 运行 这里 我是自己创建的一个新工程 第一步: 新建一个Android工程 jni_test(名字自取) 第二步:为工程添加 本 ...
- Java入门篇(一)——如何编写一个简单的Java程序
最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...
- 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project
使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...
- 1、编写一个简单Makefile模板
一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, ...
- 十一、eclipse如何创建一个maven工程project
1. 2. 3. 4. 这是刚创建的工程,因为缺少WEB-INF/web.xml,所以项目会报错 5. 6. 再编写一个web.xml文件,项目就正常了,没有报错:后期需要自己添加对应的pom.xml ...
- 第一个FPGA工程—LED流水灯
这一章我们来实现第一个FPGA工程-LED流水灯.我们将通过流水灯例程向大家介绍一次完整的FPGA开发流程,从新建工程,代码设计,综合实现,管脚约束,下载FPGA程序.掌握本章内容,大家就算正式的开始 ...
随机推荐
- 微信小程序之画布
canvas 标签默认宽度300px.高度225px 同一页面中的 canvas-id 不可重复,如果使用一个已经出现过的 canvas-id,该 canvas 标签对应的画布将被隐藏并不再正常工作 ...
- base_expr +: width_expr
在Verilog-1995中,可以选择向量的任一位输出,也可以选择向量的连续几位输出,不过此时连续几位的始 末数值的index需要是常量.而在Verilog-2001中,可以用变量作为index,进行 ...
- 强大的DataGrid组件[1]
说明:DataGrid组件是Silverlight数据组件中最为常用并且是功能最为强大的数据组件.因此,对开发者而言,深入了解其特性是十分有必要的.本文先介绍该组件的基本特性,接着通过几个简单实例来说 ...
- python之深浅copy
深浅copy 1.赋值运算 a = [1, 2, 3] b = a a.append(666) print(b) #output:[1, 2, 3, 666] 对于赋值运算来说,a与b指向的是同一个内 ...
- Linux中的sleep、usleep、nanosleep、poll和select
在进行Linux C/C++编程时,可调用的sleep函数有好多个,那么究竟应当调用哪一个了?下表列出了这几个函数间的异同点,可作为参考: 性质 精准度 线程安全 信号安全 sleep libc库函数 ...
- python使用数据库的一些操作
学py感觉还是用linux操作系统比较好,下载安装mysql很简单,linux里面都有自带的,但是要用python去用mysql我们就得安装一下他的模块,因为python里面没有自带他的模块,用yum ...
- LED点阵书写显示
LED点阵书写显示屏 摘要:随着时代的发展,数字电子技术已经普及到我们生活,工作,科研,各个领域,而LED显示以其组构方式灵活.显示稳定.功耗低.寿命长.技术成熟.成本低廉等特点在车站.证券所.运 ...
- java 调用c++程序实例
1.java程序: package com.zhangshitong; import java.io.File; public class Java2cpp { static{ System.load ...
- 分形之谢尔宾斯基(Sierpinski)地毯
前面讲了谢尔宾斯基三角形,和这一节的将把三角形变为正方形,即谢尔宾斯基地毯,它是由瓦茨瓦夫·谢尔宾斯基于1916年提出的一种分形,是自相似集的一种. 谢尔宾斯基地毯的构造与谢尔宾斯基三角形相似,区别仅 ...
- 2015年 10月最新苹果IOS上架App Store商店步骤
1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开http://developer.apple.com/申请加入苹果的开发者计划.支付99美元每年,怎么申请网 ...