VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类
https://blog.csdn.net/weixin_40539125/article/details/81430801
打开VS2015 ,新建VS win32工程,前面步骤很简单,不再阐述
下面直接开始:
新建一个VC++ win32的程序,
在源文件加下添加.cpp文件,一般放main函数
- #include <iostream>
- #include <locale>
- #include "human.h"
- using namespace std;
- int main()
- {
- Human Tom;
- Tom.A(160);
- people zhangsan;
- zhangsan.B(160);
- //cout<<Tom.printf();
- }
在头文件中添加.h文件(human.h),一般是定义的类
- class Human
- {
- public:
- void A(int w);
- private:
- int *i;
- };
- class people
- {
- public:
- void B(int j);
- int num;
- private:
- int numa;
- };
头文件中的.cpp文件放类的构造函数
- #include "human.cpp"
- #include <iostream>
- #include "human.h"
- using namespace std;
- void Human::A(int w)
- {
- cout << w << endl;
- }
- void people::B(int w)
- {
- w -= 100;
- cout << w << endl;
- }
然后在源文件下的main函数的要加上类的声明头文件,头文件.cpp也要添加类声明的头文件
i
注意:头文件中定义的类,在与之同名的c文件中要做声明,类的构造函数和析构函数要么显示定义,也要显示的声明,哪怕这些函数里面没有执行的内容,空的也要写出来,否则会编译通不过,要么类的构造函数和析构函数都不写,类默认产生不执行任何程序的构造函数和析构函数
反正一条:对于类里面的析构函数和构造函数只要定义了,必须要声明,函数为空也可以
下面补充一下在VS里面多文件系统(即有多个头文件和cpp文件),使用VS来自动生成类,
1、项目右击->添加->类
输入类名后,h文件和cpp文件自动填充好,而且生成的类的构造函数、析构函数、包含头文件全都有了
如下图:
生成的代码:
h文件
- #pragma once
- class Clock
- {
- public:
- Clock();
- ~Clock();
- };
cpp文件
- #include "Clock.h"
- Clock::Clock()
- {
- }
- Clock::~Clock()
- {
- }
上面都是空的,下面在里面填上我们的函数
2、在类里面放上我们的函数
h文件添加函数后
- #pragma once
- #include <iostream>
- using namespace std;
- class Clock
- {
- public:
- Clock();
- void SetTime(int NewH, int NewM, int NewS); //三个形参均具有函数原型作用域
- void ShowTime();
- ~Clock();
- private:
- int Hour, Minute, Second;
- };
cpp文件添加函数后:
- #include "Clock.h"
- Clock::Clock()
- {
- Hour = 0;
- Minute = 0;
- Second = 0;
- }
- void Clock::SetTime(int NewH, int NewM, int NewS)
- {
- Hour = NewH;
- Minute = NewM;
- Second = NewS;
- }
- void Clock::ShowTime()
- {
- cout << Hour << ":" << Minute << ":" << Second << endl;
- }
- Clock::~Clock()
- {
- }
3、在main里面添加我们的类包含头文件
#include "Clock.h" //头文件
- Clock g_Clock;
- int main() //主函数
- {
- cout << "文件作用域的时钟类对象:" << endl;
- //引用具有文件作用域的对象:
- g_Clock.ShowTime();
- g_Clock.SetTime(10, 20, 30);
- Clock myClock(g_Clock); //声明具有块作用域的对象myClock,并通过默认拷贝构造函数用g_Clock初始化myClock
- cout << "块作用域的时钟类对象:" << endl;
- myClock.ShowTime(); //引用具有块作用域的对象
- return 0;
- }
运行结果:
over!!!
VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类的更多相关文章
- 如何把别人的原理图和pcb图建立一个完整的工程
这里是我从网友那里下载的pcb图和原理图 我们怎么通过这两个文件建立一个完整的工程 我们选中pcb图文件,通过下面的操作,就可以导出pcb封装库: 同样的方法,我选中pcb图,然后用下面图的方法,就可 ...
- idea破解版安装、配置jdk以及建立一个简单的maven工程
idea破解版安装.配置jdk,配置jdk环境变量以及建立一个简单的maven工程 一.idea破解版以及配置文件下载 下载网址:https://pan.baidu.com/s/1yojA51X1RU ...
- java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 使用过程 和servlet差不多
java nio 写一个完整的http服务器 支持文件上传 chunk传输 gzip 压缩 也仿照着 netty处理了NIO的空轮询BUG 本项目并不复杂 代码不多 ...
- 一个C++引用库的头文件预编译陷阱
写在前面 老胡最近在工作中,有个场景需要使用一个第三方库,引用头文件,链接库,编译运行,一切都很正常,但是接下来就遇到了一个很诡异的问题,调用该库的中的一个对象方法为对象修改属性的时候,会影响到对象的 ...
- C++中的头文件(.h)和源文件(.cpp)都应该写什么?
头文件(.h):写定义和声明写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但是一般来说不写具体的实现.注意: 1.在写头文件的时候需要注意,在开头和结尾处必须按照如下样式 ...
- 头文件 .h 与源文件 .ccp 的区别
.h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当然,比较简单的类.函数,你也可以直接在头文 ...
- [转]extern与头文件(*.h)的区别和联系
用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字? 如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx. ...
- C++学习笔记二、头文件与源文件
头文件 .h 与源文件 .ccp 的区别 .h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当 ...
- extern与头文件(*.h)的区别和联系
原文网址为:http://lpy999.blog.163.com/blog/static/117372061201182051413310/ 个人认为有一些道理:所以转过来学习了. 用#include ...
随机推荐
- Sql 注入----学习笔记
先了解下CRLF,CRLF常用在分隔符之间,CR是carriage retum(ASCII 13,\r) LF是Line Feed (ASCII 10,\n), \r\n这两个字符类似于回车是用于换行 ...
- 初学WebGL引擎-BabylonJS:第6篇-碰撞交错与挑选
[playground]-collisions(碰撞) 先贴官方源码(机器翻译版本) var createScene = function () { var scene = new BABYLON.S ...
- 启动oracle11监听器错误
启动oracle11监听器错误:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案 . 关键字:启动oracle10监听器错误:本地计算机上的Ora ...
- SqlAnalyzer1.01 源码
源码下载:https://files.cnblogs.com/files/heyang78/SqlAnalyzer-20200529-2.rar 现有功能:不带函数允许嵌套的select ...fro ...
- Oracle中树形查询使用方法
树形查询一般用于上下级场合,使用的特殊sql语法包括level,prior,start with,connect by等,下面将就实例来说明其用法. 表定义: create table tb_hier ...
- Asp.Net中的三种分页方式总结
本人ASP.net初学,网上找了一些分页的资料,看到这篇文章,没看到作者在名字,我转了你的文章,只为我可以用的时候方便查看,2010的文章了,不知道这技术是否过期. 以下才是正文 通常分页有3种方法, ...
- leetcode刷题-47全排列2
题目 给定一个可包含重复数字的序列,返回所有不重复的全排列. 思路 其思路与46题完全一致,但是需要与组合总和2题一般,在同一层取出重复元素.因此可以在每一层设置一个set()类型,将访问过的元素放入 ...
- mysql与redis区别
编号 mysql redis 1 类型 关系型数据库 缓存数据库 2 作用 主要用于存放持久化数据,是将数据存储在硬盘中,读取时速度较慢,而且频繁访问也会导致数据库负载过高. 用于存储使用频繁的 ...
- Ubuntu查看并修改主机名的方法
1 查看主机名 在Ubuntu系统中,快速查看主机名有多种方法: 在终端窗口中,主机名通常位于@符号后:root@lzyws739307453:~#例如这个的主机名就是lzyws739307453. ...
- Docker学习笔记二(linux下安装Docker)
Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...