https://blog.csdn.net/weixin_40539125/article/details/81430801

打开VS2015 ,新建VS win32工程,前面步骤很简单,不再阐述

下面直接开始:

新建一个VC++ win32的程序,

在源文件加下添加.cpp文件,一般放main函数

  1.  
    #include <iostream>
  2.  
    #include <locale>
  3.  
    #include "human.h"
  4.  
    using namespace std;
  5.  
     
  6.  
     
  7.  
    int main()
  8.  
  9.  
    Human Tom;
  10.  
    Tom.A(160);
  11.  
    people zhangsan;
  12.  
    zhangsan.B(160);
  13.  
     
  14.  
     
  15.  
    //cout<<Tom.printf();
  16.  
    }

在头文件中添加.h文件(human.h),一般是定义的类

  1.  
    class Human
  2.  
    {
  3.  
    public:
  4.  
    void A(int w);
  5.  
    private:
  6.  
    int *i;
  7.  
    };
  8.  
     
  9.  
     
  10.  
    class people
  11.  
    {
  12.  
    public:
  13.  
    void B(int j);
  14.  
    int num;
  15.  
    private:
  16.  
    int numa;
  17.  
    };

头文件中的.cpp文件放类的构造函数

  1.  
    #include "human.cpp"
  2.  
     
  3.  
     
  4.  
     
  5.  
    #include <iostream>
  6.  
    #include "human.h"
  7.  
    using namespace std;
  8.  
    void Human::A(int w)
  9.  
    {
  10.  
    cout << w << endl;
  11.  
    }
  12.  
    void people::B(int w)
  13.  
    {
  14.  
    w -= 100;
  15.  
    cout << w << endl;
  16.  
    }
  17.  
     

然后在源文件下的main函数的要加上类的声明头文件,头文件.cpp也要添加类声明的头文件

i

注意:头文件中定义的类,在与之同名的c文件中要做声明,类的构造函数和析构函数要么显示定义,也要显示的声明,哪怕这些函数里面没有执行的内容,空的也要写出来,否则会编译通不过,要么类的构造函数和析构函数都不写,类默认产生不执行任何程序的构造函数和析构函数

反正一条:对于类里面的析构函数和构造函数只要定义了,必须要声明,函数为空也可以

下面补充一下在VS里面多文件系统(即有多个头文件和cpp文件),使用VS来自动生成类,

1、项目右击->添加->类

输入类名后,h文件和cpp文件自动填充好,而且生成的类的构造函数、析构函数、包含头文件全都有了

如下图:

生成的代码:

h文件

  1.  
    #pragma once
  2.  
     
  3.  
     
  4.  
    class Clock
  5.  
     
  6.  
    {
  7.  
     
  8.  
    public:
  9.  
     
  10.  
    Clock();
  11.  
     
  12.  
    ~Clock();
  13.  
     
  14.  
    };

cpp文件

  1.  
    #include "Clock.h"
  2.  
     
  3.  
     
  4.  
    Clock::Clock()
  5.  
     
  6.  
    {
  7.  
     
  8.  
    }
  9.  
     
  10.  
     
  11.  
    Clock::~Clock()
  12.  
     
  13.  
    {
  14.  
     
  15.  
    }
  16.  
     

上面都是空的,下面在里面填上我们的函数

2、在类里面放上我们的函数

h文件添加函数后

  1.  
     
  2.  
     
  3.  
    #pragma once
  4.  
     
  5.  
    #include <iostream>
  6.  
     
  7.  
    using namespace std;
  8.  
     
  9.  
     
  10.  
    class Clock
  11.  
     
  12.  
    {
  13.  
     
  14.  
    public:
  15.  
     
  16.  
    Clock();
  17.  
     
  18.  
    void SetTime(int NewH, int NewM, int NewS); //三个形参均具有函数原型作用域
  19.  
     
  20.  
    void ShowTime();
  21.  
     
  22.  
    ~Clock();
  23.  
     
  24.  
    private:
  25.  
     
  26.  
    int Hour, Minute, Second;
  27.  
     
  28.  
    };

cpp文件添加函数后:

  1.  
    #include "Clock.h"
  2.  
     
  3.  
    Clock::Clock()
  4.  
     
  5.  
    {
  6.  
     
  7.  
    Hour = 0;
  8.  
     
  9.  
    Minute = 0;
  10.  
     
  11.  
    Second = 0;
  12.  
     
  13.  
     
  14.  
    }
  15.  
     
  16.  
    void Clock::SetTime(int NewH, int NewM, int NewS)
  17.  
     
  18.  
    {
  19.  
     
  20.  
    Hour = NewH;
  21.  
     
  22.  
    Minute = NewM;
  23.  
     
  24.  
    Second = NewS;
  25.  
     
  26.  
    }
  27.  
     
  28.  
    void Clock::ShowTime()
  29.  
     
  30.  
    {
  31.  
     
  32.  
    cout << Hour << ":" << Minute << ":" << Second << endl;
  33.  
     
  34.  
    }
  35.  
     
  36.  
     
  37.  
    Clock::~Clock()
  38.  
     
  39.  
    {
  40.  
     
  41.  
    }
  42.  
     
  43.  
     
  44.  
     

3、在main里面添加我们的类包含头文件

#include "Clock.h"   //头文件
 
  1.  
     
  2.  
    Clock g_Clock;
  3.  
     
  4.  
    int main() //主函数
  5.  
     
  6.  
    {
  7.  
     
  8.  
    cout << "文件作用域的时钟类对象:" << endl;
  9.  
     
  10.  
    //引用具有文件作用域的对象:
  11.  
     
  12.  
    g_Clock.ShowTime();
  13.  
     
  14.  
    g_Clock.SetTime(10, 20, 30);
  15.  
     
  16.  
     
  17.  
    Clock myClock(g_Clock); //声明具有块作用域的对象myClock,并通过默认拷贝构造函数用g_Clock初始化myClock
  18.  
     
  19.  
    cout << "块作用域的时钟类对象:" << endl;
  20.  
     
  21.  
    myClock.ShowTime(); //引用具有块作用域的对象
  22.  
     
  23.  
    return 0;
  24.  
     
  25.  
    }

​​​​

运行结果:

over!!!

VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类的更多相关文章

  1. 如何把别人的原理图和pcb图建立一个完整的工程

    这里是我从网友那里下载的pcb图和原理图 我们怎么通过这两个文件建立一个完整的工程 我们选中pcb图文件,通过下面的操作,就可以导出pcb封装库: 同样的方法,我选中pcb图,然后用下面图的方法,就可 ...

  2. idea破解版安装、配置jdk以及建立一个简单的maven工程

    idea破解版安装.配置jdk,配置jdk环境变量以及建立一个简单的maven工程 一.idea破解版以及配置文件下载 下载网址:https://pan.baidu.com/s/1yojA51X1RU ...

  3. java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多

    java nio 写一个完整的http服务器  支持文件上传   chunk传输    gzip 压缩      也仿照着 netty处理了NIO的空轮询BUG        本项目并不复杂 代码不多 ...

  4. 一个C++引用库的头文件预编译陷阱

    写在前面 老胡最近在工作中,有个场景需要使用一个第三方库,引用头文件,链接库,编译运行,一切都很正常,但是接下来就遇到了一个很诡异的问题,调用该库的中的一个对象方法为对象修改属性的时候,会影响到对象的 ...

  5. C++中的头文件(.h)和源文件(.cpp)都应该写什么?

    头文件(.h):写定义和声明写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但是一般来说不写具体的实现.注意: 1.在写头文件的时候需要注意,在开头和结尾处必须按照如下样式 ...

  6. 头文件 .h 与源文件 .ccp 的区别

    .h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当然,比较简单的类.函数,你也可以直接在头文 ...

  7. [转]extern与头文件(*.h)的区别和联系

    用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字? 如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx. ...

  8. C++学习笔记二、头文件与源文件

    头文件 .h 与源文件 .ccp 的区别 .h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当 ...

  9. extern与头文件(*.h)的区别和联系

    原文网址为:http://lpy999.blog.163.com/blog/static/117372061201182051413310/ 个人认为有一些道理:所以转过来学习了. 用#include ...

随机推荐

  1. 利用OpenCV进行H264视频编码的简易方式

    在Python下,利用pip安装预编译的opencv库,并实现h264格式的视频编码. 1. 安装OpenCV $ pip install opencv-python 建议在python虚拟环境下安装 ...

  2. node.js的安装及其相关环境变量的配置

    笔者最近一直重置电脑,本来想换台mac,想了想还是加下配置吧. 于是慢慢的一直会去安装node 接下来进入教程环节 一.NodeJS下载 1.下载NodeJS安装包下载地址:NodeJS下载 2.开始 ...

  3. Photon PUN 二 大厅 & 房间

    一, 简介 玩过 LOL , dota2, 王者荣耀 等MOBA类的游戏,就很容易理解大厅和房间了. LOL中一个服务器就相当与一个大厅; 什么电一,电二 ,,, 联通一区等 每一个区就相当于一个大厅 ...

  4. C#委托链

    使用Delegate.Combine时,注意两点: 1. 不可以将不同签名的两个委托相互Combine. 2.如果将有返回值的两个委托A 和 B Combine,那么返回值是最后一个委托的的返回值,也 ...

  5. C010:书号分解ISBN

    代码: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int prefix,groupIndentifier ...

  6. 设置logback的log文件地址为程序运行的当前目录

    这个需求虽然怪异,却也不是无事生非,在以jar包为执行主体的程序中就会遇到. 设置方法就是指定Log_HOME为./,其在如下配置文件的第四行: <?xml version="1.0& ...

  7. spring5源码 -- IOC容器设计理念和核心注解的作用

    一. spring源码整体脉络介绍及源码编译 二. Spring IOC的源码深入学习 2.1 ioc容器的加载过程(重要) 2.2 bean的生命周期源码深度剖析 2.3 循环依赖总结讲解 2.4 ...

  8. oracle之三rman 维护

    rman 维护 11.1 rman 使用和维护 11.2 list 命令一览 1)RMAN> list backup; 2)RMAN> list backup of tablespace ...

  9. [IDEA]Java:“程序包XXX不存在”问题的三种解决方案

    ###三种方案 ####01 出现jar包找不到的问题,首先有可能是项目依赖中有些jar没有下载完整 而mvn idea:idea这个命令可以检查并继续下载未下载完整的依赖jar. 在命令行输入mvn ...

  10. zepto | 用事件委托去解决无法给新增添的DOM添加事件的问题

    前段时间在做一个任务的时候,碰见了一个问题:zepto无法用on事件去监听新增加的dom事件.这个问题用live可解决, 但是live在ios下失效,为了解决这个问题,我采用了暴力的方法去解决,每次添 ...