编写一个c++工程

  c++接触的很少,之前也只是会编写一个简单的cpp文件,但一个工程的实现,往往不仅包括源文件(.cpp后缀文件)一般还有头文件(.h后缀文件)等。一个c++工程中只能有一个main函数,这个函数所在的文件类似于前端中的入口文件,即从main函数开始执行整个工程。即有多个cpp文件,这些文件中也只有一个入口文件。

  

基本概念之头文件

  头文件就是.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

  从这个文件中我们可以看出头文件的一些特点:

  • 定义了类,包括类的变量和方法,但是方法只是声明,具体语句没有写。
  • 头文件必须要有下面的几个语句。 且一般要求后面的文件前后有__来作为补充,另外要求英文字母全部大写,比如这个例子中这个.h文件名称为outfile_framedata.h。

    • #ifndef 即if not define的缩写,意思是如果没有定义。
    • #define 那么就定义。
    • #endif 结束if
  • 而上面三个必要语句的作用就是可能会有多个cpp文件使用这个头文件(头文件也有可复用的作用),如果这个头文件没有被编译,就会进行编译,否则,就不需要再编译了,起了防止重复编译的作用。

基本概念之源文件

源文件是工程中最重要的部分。 一般源文件的开头会引用头文件,如使用#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 = 5;
}

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 0;
}
void test(double a)
{
    try
    {
        if (a < 0)
        {
            throw 0;
        }
    }
    catch (int)
    {
        cerr << "the number " << a << " is not fit for this!" << endl;
        exit(1);
    }
}

  这个文件中,我们同样需要引入头文件 circle.h, 而不需要引入 circle.cpp,这个工程的入口文件就是main.cpp。 注意: 文件中 test是用于处理c++程序异常的。

  ctrl + F5可以执行整个工程,最终执行效果如下所示:

  

  

  

  ok,这就是一个最为基本的c++工程了。

打开工程文件

  选择 文件 - 打开 - 项目/解决方案,然后找到对应文件的 vcxproj 后缀文件即可在 visual studio 中打开此工程。然后ctrl + F5即可运行。

  

原文地址:https://www.cnblogs.com/zhuzhenwei918/p/8568692.html

时间: 2024-08-07 01:11:37

编写一个c++工程的相关文章

Android For JNI(六)——交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程

Android For JNI(六)--交叉编译,NDK概述以及文件结构,编写自己的第一个JNI工程 终于回到我们的android了,我们先要配置这个NDK的环境,但是之前,我们还要了解一下基本的术语 一.交叉编译 在一个平台下编译出另一个平台可以执行的二进制程序 CPU平台:ARM X86 MIPS(指令集) 系统平台:windows linux mac 原理:模拟另一个平台的特性去编译程序 源代码-->预编译-->编译-->链接-->可执行程序 工具链:一个工具使用自动调用下一

第一个FPGA工程—LED流水灯

这一章我们来实现第一个FPGA工程-LED流水灯.我们将通过流水灯例程向大家介绍一次完整的FPGA开发流程,从新建工程,代码设计,综合实现,管脚约束,下载FPGA程序.掌握本章内容,大家就算正式的开始入门FPGA开发了. 1.1.1.电路说明 1.1.2.新建工程 第一步:从开始菜单启动Quartus II 13.1(64 bit) ,如下图. 第二步:菜单栏选择File->New Project Wizard,新建工程. 第三步:弹出新建工程对话框,点击Next,下一步. 第三步:如下图,依次

实现第一个FPGA工程—FPGA入门教程【钛白Logic】

这一章我们来实现第一个FPGA工程-LED流水灯.我们将通过流水灯例程向大家介绍一次完整的FPGA开发流程,从新建工程,代码设计,综合实现,管脚约束,下载FPGA程序.掌握本章内容,大家就算正式的开始入门FPGA开发了. 1.1.1.电路说明 1.1.2.新建工程 第一步:从开始菜单启动Quartus II 13.1(64 bit) ,如下图. 第二步:菜单栏选择File->New Project Wizard,新建工程. 第三步:弹出新建工程对话框,点击Next,下一步. 第三步:如下图,依次

Eclipse中一个Maven工程的目录结构

在之前的javaSE开发中,没有很关注Eclipse工程目录下的环境,总是看见一个src就点进去新建一个包再写一个class.以后的日子中也没有机会注意到一个工程到底是怎么组织的这种问题,跟不要说自己试试怎么控制了. 但是最近在学习Maven的时候知道了它对工程的目录结构有要求,也就是所谓的"惯例优于配置".有一个被绝大多数人认可的java工程的目录结构被确定下来.这样统一了市面上各种复杂配置的工程.于是我便重新开始查资料,看看别人到底如何安排一个优秀的工程框架的. 首先,一个默认的E

Keil建立第一个C51工程的步骤

参见51+arm开发板<使用手册.pdf> 1.“project”   >>  “new project”  >>  新建一个用于保存工程的文件夹例如dem  >>  然后将project保存在此文件夹内,并输入工程名称  >>  然后选择芯片型号  >>  弹出对话框点击“确认”. 2.点击新建图标,点击保存图标,给新建文件命名为.c或.asm文件. 3.右键“Source Group 1”  >>  “Add File

如何编写一个Maven插件

如何编写一个Maven插件 本文基于eclipse ee. 建立一个maven插件工程: 主要就是让项目能依赖maven-plugin-api: 编写一个Mojo类: /** * 用于输出消息的Mojo * @goal hello */ public class HelloMojo extends AbstractMojo { /** * @parameter expression="${echo.message}" default-value="Hello Maven Wo

android JNI (二) 第一个 android工程

下载NDK 后 它自带有 sample,初学者 可以导入Eclipse 运行 这里 我是自己创建的一个新工程 第一步: 新建一个Android工程 jni_test(名字自取) 第二步:为工程添加 本地支持 右击工程,选择 android tools -- Add Native support  后,会弹出一个对话框 让你输入 库的名称 这个名字 你可以做修改,也可以使用默认,点击finish 之后,你会发现 该工程里多了几个文件夹,其中有一个叫 jni,这里 就是我们写c代码的地方,jni文件

1、编写一个简单Makefile模板

一.Makefile简介 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令.linux内核的编译同样也遵循这些规则,具体说明可见kernel/Documentation/kbuild/makefiles.txt 二.简单编写一个Makefile模板 当编译少量的源文件

如何编写一个带命令行参数的Python文件

看到别人执行一个支持命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持命令行参数. 首先你要知道python中的sys模块的一些功能: import sys print "the number of python program's argument:",len(sys.argv) print "the value of every argument