C++头文件学习

本文详细介绍了C++中的头文件(.h)和源文件(.cpp)的作用及编写规范。头文件主要包含类声明、函数原型和常量定义,使用#ifndef...#define...#endif避免重复编译。源文件则实现头文件中声明的函数和类。通过实例展示了如何创建和编译头文件、源文件,并提供了使用g++命令行编译和makefile方式编译的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、头文件(.h):
    写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。
    在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下):
#ifndef CIRCLE_H
#define CIRCLE_H
//你的代码写在这里
#endif
   这样做是为了防止重复编译,不这样做就有可能出错。
   至于CIRCLE_H这个名字实际上是无所谓的,你叫什么都行,只要符合规范都行。原则上来说,非常建议把它写成这种形式,因为比较容易和头文件的名字对应。

这是一个求圆形面积的函数

##################在头文件的文件夹里新建一个名为circle.h的头文件,它的内容如下:


#ifndef CIRCLE_H
#define CIRCLE_H

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

 

二、 源文件(.cpp):
   源文件主要写实现头文件中已经声明的那些函数的具体代码。需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。 
   注意到开头结尾的预编译语句。在头文件里,并不写出函数的具体实现。
   要给出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类。

三、编译

1、分离式编译

g++ -c circle.cpp -o circle.o

g++ -c main.cpp -o main.o

g++ main.o circle.o -o main

//说明g++指令:

-c  只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

-o   制定目标名称

或者一步到位: g++ circle.cpp main.cpp -o main

2、makefile 方式编译

建立名为makefile的文件,内容:

main: main.o circle.o
	g++ main.o circle.o -o main
Circle.o:circle.cpp
	g++ -c circle.cpp -o circle.o
main.o:main.cpp
	g++ -c main.cpp -o main.o

编译:make

两种编译方式选一个之后运行:./main

结果:Area=28.26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值