c++ - eclipse 为 c++ 类创建 header 和 cpp 为什么?

标签 c++ eclipse

<分区>

我是 C++ 的新手(我之前接触过 Java 和 C) 我无法理解...当我想创建一些新类时,eclipse 正在创建头文件和 cpp 文件,为什么?问题是, header 似乎包含类基本植入,那么 cpp 文件正在使用什么?

标题:

#ifndef HEAP_H_
#define HEAP_H_

namespace std {

class Heap {
public:
        Heap();
        virtual ~Heap();
};

} /* namespace std */
#endif /* HEAP_H_ */

cpp:

#include "Heap.h"

namespace std {

Heap::Heap() {
        // TODO Auto-generated constructor stub

}

Heap::~Heap() {
        // TODO Auto-generated destructor stub
}

} /* namespace std */

C++ 中的面向对象思想看起来很奇怪。当你有一个带有方法的类文件时,头文件有什么意义?
无论如何,谢谢!

最佳答案

头文件是类声明所在的地方。这样做是为了让多个文件能够包含 Heap 类。

您可以只在头文件中单独编写实现,但由于多次声明了方法/类/任何内容,您将无法将其包含在多个文件中。这实际上在 C 中也是如此。如果您创建包含文件:

int double_me(int number) {
        return number * 2;
}

然后将其包含在多个文件中,编译器会提示同一个方法被多次声明。

也就是说,头文件是声明所有类函数和变量的地方。 .cpp 源文件是编写实现的地方。

例如,如果您想向 Heap 类添加一个方法:

堆.h:

#ifndef HEAP_H_
#define HEAP_H_

namespace std {

class Heap {
public:
        Heap();
        virtual ~Heap();
        void do_nothing(int some_parameter);
};

} /* namespace std */
#endif /* HEAP_H_ */

堆.cpp:

#include "Heap.h"

namespace std {

Heap::Heap() {
    // TODO Auto-generated constructor stub

}

Heap::~Heap() {
    // TODO Auto-generated destructor stub
}

void Heap::do_nothing(int some_parameter) {
}

另一个优点是减少了编译时间。如果要进行重新编译,但堆对象文件未更改,则不必重新编译堆实现。

关于c++ - eclipse 为 c++ 类创建 header 和 cpp 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20410956/

相关文章:

android - 如何将一个lib结构复杂的Eclipse workspace导入到Android Studio中?

eclipse - Eclipse Indigo 中缺少 "Servers" View

java - groovy-eclipse-compiler 不显示编译器错误

c++ - OpenCV 将有界文本区域复制到新图像

c++ - Qt 将 QString 传递给结构构造函数不起作用

c++ - 运算符>> 在带有 std::ignore 的绑定(bind)元组上

java - 如何使用 Eclipse 从 Github 运行下载的嵌套演示 Android 项目?

用于在 XML 中存储设置的 C++ 库

c++ - 将外部 C 库加载到现有的 C++ 项目中(例如 ffmpeg/libavcodec - 一步一步)

java - 安装插件后无法在 eclipse 中找到 TestNG 选项