C++ eclipse为c++;上课为什么?
标题:C++ eclipse为c++;上课为什么?,c++,eclipse,C++,Eclipse,标题: #ifndef HEAP_H_ #define HEAP_H_ namespace std { class Heap { public: Heap(); virtual ~Heap(); }; } /* namespace std */ #endif /* HEAP_H_ */ cpp: C++中的面向对象思维似乎很奇怪。当您有一个包含方法的类文件时,头文件有什么意义? 无论如何,谢谢 头文件是类声明所在的位置。这样做是为了使多个文件能够包含Hea
#ifndef HEAP_H_
#define HEAP_H_
namespace std {
class Heap {
public:
Heap();
virtual ~Heap();
};
} /* namespace std */
#endif /* HEAP_H_ */
cpp:
C++中的面向对象思维似乎很奇怪。当您有一个包含方法的类文件时,头文件有什么意义?无论如何,谢谢 头文件是类声明所在的位置。这样做是为了使多个文件能够包含Heap类 您可以只在头文件中自己编写实现,但由于多次声明了方法/类/任何内容,因此无法将其包含在多个文件中。在C语言中也是如此。如果创建包含文件:
int double_me(int number) {
return number * 2;
}
然后包含在多个文件中,编译器会抱怨同一个方法被多次声明
也就是说,头文件是声明所有类函数和变量的地方。.cpp源文件是编写实现的地方
例如,如果要向Heap类添加方法:
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_ */
Heap.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++类来说,头文件和实现文件都是非常标准的。这样做的原因是,其他使用类的函数通常需要知道调用类的方式(在头文件中找到),而不需要知道这些调用实际上是如何实现的。头文件中实现的唯一函数应该是内联函数(移动到调用函数中)或模板函数
事实上,如果编译器在多个对象(*.o)文件中多次实现同一函数,它将在链接过程中返回错误。这与C实现文件头文件相同。头文件包含原型,实现文件包含实现。我想我现在明白了!总之,头是类本身的某种接口?我做对了吗?我不能投票赞成你的答案,但我想我很清楚它的意义(thx:)。没错。您仍然可以接受它作为答案:请编辑您的问题并输入代码。可能的重复项
#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) {
}