c++中.h和.cpp中具体应该写什么内容
2015-07-09 21:13
441 查看
头文件(.h):
写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
头文件(.h):
写在头文件里的是:类的声明(包括类里面 的成员和方法的声明)、函数声明、#define常数等。一般来说不写具体的实现
注意:要在开头和结尾写上预编译语句,目的:防止重复编译。
#ifndef CIRCLE_H #define CIRCLE_H //类的声明(包括类里面 的成员和方法的声明)、函数声明、#define常数 #endif
CIRCLE_H是随便起的名字,所以叫什么是无所谓的。
源文件主要写实现头文件中已经声明的那些函数的具体代码。
源文件:实现头文件中已经声明的那些函数的代码。注意:此处应包括:c++所带的那些头文件和你自己写的那些头文件
举例说明:
编写计算圆的面积的代码:
第一步:定义Circle.h
#ifndef CIRCLE_H
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#define CIRCLE_H
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
class Circle
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
private:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
double r;//半径
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
public:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Circle();//构造函数
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Circle(double R);//构造函数
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
double Area();//求面积函数
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
};
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#endif
注意到开头结尾的预编译语句。在头文件里,并不写出函数的具体实现。
第2步,要给出Circle类的具体实现,因此,在源文件夹里新建一个Circle.cpp的文件,它的内容如下:
具体内容为对类中的相应方法的实现。
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include "Circle.h"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Circle::Circle()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
this->r=5.0;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
Circle::Circle(double R)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
this->r=R;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
double Circle:: Area()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return 3.14*r*r;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
需要注意的是:开头处包含了Circle.h,事实上,只要此cpp文件用到的文件,都要包含进来!这个文件的名字其实不一定要叫Circle.cpp,但非常建议cpp文件与头文件相对应。
最后,我们建一个main.cpp来测试我们写的Circle类,它的内容如下:
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include <iostream>
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
#include "Circle.h"
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
using namespace std;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif)
int main()
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif)
{
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
Circle c(3);
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
cout<<"Area="<<c.Area()<<endl;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif)
return 1;
![](http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif)
}
相关文章推荐
- C语言学习笔记:22_结构体
- leetcode 日经贴,Cpp code -Number of Digit One
- c++实现文件拷贝,不用system函数
- 最简单的实现用户自定义的字符串的输入的输出显示
- 最全的c++map的用法
- C++ STL replace()函数常用用法详解
- C++实现一个多线程同步方式的协同工作程序示例
- 虚幻4C++编写可以被蓝图子类重载的函数。
- 设计模式C++实现_1_Singleton设计模式(简单的实现)
- 虚幻4C++向蓝图发送消息。
- 简易程序模拟ATM
- D25 OC学习线路 C语言单词首字母大写并统计单词个数
- 华为C语言笔试题
- extern "C"的问题研究
- C++ 语句,表达式的区别
- C++ priority_queue
- C++ HOJ 二阶魔方
- 探索C/C++大数快(自然数)模板
- Armadillo C++ linear algebra library 学习笔记(4)——矩阵的运算
- c++ 函数库查询