头文件(.h):

写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。

在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):

#ifndef CIRCLE_H
#define CIRCLE_H

//你的代码写在这里

#endif

这样做是为了防止重复编译,不这样做就有可能出错。

至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行。原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应。

源文件(.cpp):

源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。

下面举个最简单的例子来描述一下,咱就求个圆面积。

第1步,建立一个空工程(以在VS2003环境下为例)。

第2步,在头文件的文件夹里新建一个名为Circle.h的头文件,它的内容如下:

#ifndef CIRCLE_H
#define CIRCLE_H

class Circle
{
private:
    double r;//半径
public:
    Circle();//构造函数
    Circle(double R);//构造函数
    double Area();//求面积函数
};

#endif

注意到开头结尾的预编译语句。在头文件里,并不写出函数的具体实现。

第3步,要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下:

#include "Circle.h"

Circle::Circle()
{
    this->r=5.0;
}

Circle::Circle(double R)
{
    this->r=R;
}

double Circle:: Area()
{
    return 3.14*r*r;
}

需要注意的是:开头处包含了Circle.h,事实上,只要此cpp文件用到的文件,都要包含进来!这个文件的名字其实不一定要叫Circle.cpp,但非常建议cpp文件与头文件相对应。

最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下:

#include <iostream>
#include "Circle.h"
using namespace std;

int main()
{
    Circle c(3);
    cout<<"Area="<<c.Area()<<endl;
    return 1;
}

注意到开头时有#include "Circle.h"的声明,证明我们使用到了我们刚才写的Circle类。

至此,我们工程的结构为:

运行一下,输出结果为:

说明我们写的Circle类确实可以用了。

C++中对于类来说头文件(.h)和源文件(.cpp)都应该写些什么 (类的常规创建)相关推荐

  1. C++中头文件(.h)和源文件(.cpp)都应该写些什么,头文件中的预编译语句作用,命名空间和头文件的区别与联系,内部链接和外部链接

    1. C++中头文件(.h)和源文件(.cpp)都应该写些什么: 总结下来就是头文件写的就是类的声明(包括类里面的成员和方法的声明)和函数的声明,但一般来说不写出具体的实现.对应的同名(可以不同名,但 ...

  2. C++中头文件(.h)和源文件(.cpp)都应该写些什么

    原文出处:https://www.cnblogs.com/fenghuan/p/4794514.html 头文件(.h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等, ...

  3. Clion中使用头文件和源文件坑

    Clion 中使用头文件定义类,源文件实现 include什么 导入头文件(.h)和源文件(.cpp) Note: 只导入 源文件(.cpp) 也可以 CMakeLists.txt 手动添加 cmak ...

  4. C++ 头文件和源文件

    from:https://www.cnblogs.com/fenghuan/p/4794514.html C++中头文件(.h)和源文件(.cpp)都应该写些什么 头文件(.h): 写类的声明(包括类 ...

  5. (整理类)文件描述符,文件描述符标志,文件状态标志

    感谢和参考于(你们是我成长路上的最大助力!): Linux中文件描述符fd和文件指针flip的理解 文件描述符标志.文件状态标志 Linux编程–文件描述符fd PART 1 文件描述符:fd(fil ...

  6. C语言后缀.h文件和.c文件作用和区别

    简述C语言中.h文件和.c文件作用和区别 在c语言学习过程中,对.h文件和.c文件不甚了解,参考其他资料后对它进行简要分析: .h文件和.c文件作用 使用.h文件和.c文件的原因 .h文件和.c文件作 ...

  7. 简述C语言中.h文件和.c文件作用和区别

    简述C语言中.h文件和.c文件作用和区别 在c语言学习过程中,对.h文件和.c文件不甚了解,参考其他资料后对它进行简要分析: .h文件和.c文件作用 使用.h文件和.c文件的原因 .h文件和.c文件作 ...

  8. 六类网线钳能压五类水晶头吗_一分钟自制高质量水晶头,如何区分超5类水晶头与6类水晶头?...

    原标题:一分钟自制高质量水晶头,如何区分超5类水晶头与6类水晶头? 有些朋友提到如何制作标准的水晶头?能不能发一期水晶头制作的内容?弱电人平时制作水晶头可能是最多的,一个标准的水晶头制作可以减少网络中 ...

  9. linux ruby 删除文件,ruby 删除文件夹(包括文件夹中的文件夹和文件)

    php 得到一个文件夹下的所有文件,包括子文件中的文件 $dir = FCPATH."uploads/attachment/"; $this->getFiles($dir); ...

最新文章

  1. UI学习第二篇 (控件)
  2. doc2vec介绍和实践
  3. 你的微服务网关还只在用负载均衡吗?
  4. matlab和C/C++混合编程--Mex
  5. 一次MySQL性能优化实战(转)
  6. 为什么hive需要mysql作为数据库_Hive安装(本地独立模式,MySql为元数据库)
  7. Linux—系统文件和目录介绍
  8. Java查询spark中生成的文件,spark原代码生成方法
  9. HIVE攻略 JFK_Hive安装及使用攻略
  10. 服务器克隆机网络端口排错
  11. linux qt创建静态库,QT创建与QT无关的纯C++程序和动态/静态库
  12. 我的Android进阶之旅------Android实现音乐示波器、均衡器、重低音和音场功能
  13. Postgresql Bloom索引
  14. 中国需要怎样的智慧城市联盟?中外41家联盟组织大起底
  15. Tube Downloader(视频下载工具)
  16. 【requireJS路径加载】与程序员小卡的交流
  17. java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端
  18. grub 2.0安装linux,grub2引导安装kali2.0及安装ibus拼音输入法
  19. Python爬虫——aiohttp异步协程爬取同程旅行酒店评论
  20. 计算时针分针秒针夹角的方法

热门文章

  1. FIR设置过采样率 matlab,Xilinx FIR IP的介绍与仿真
  2. 2012年A题葡萄酒的评价论文与代码
  3. 呼市计算机应用那个职高好,呼和浩特职业高中哪个比较好
  4. python模拟键盘输入视频_python教程-模拟鼠标和键盘输入
  5. c++ 数组的数据保存二进制_Redis五种不同的数据类型
  6. python pexpect timeout_Python 的 pexpect 模块的问题
  7. 我有单片机,你有酒吗?
  8. 高级运维工程师证书_高级装配式工程师证书有什么用?
  9. python代码颜色不同_python – 两个不同颜色的颜色在同一个imshow matplotlib
  10. 1.1收集域名信息-完整介绍