我一直在使用Java工作,而C ++也让人困惑。
在Java中你有类文件,起初我认为它相当于C ++中的头文件,如下所示:
#ifndef PROGRAM_H
#define PROGRAM_H
#include <iostream>
#include <string>
class Program {
private:
std::string name, version, author;
public:
Program(std::string name, std::string version, std::string author) {
this->name = name;
this->version = version;
this->author = author;
}
std::string toString() {
return name + " " + version + " - by " + author + "\n";
}
} MainProgram("program", "2.0a", "foo bar");
#endif
我刚刚读到我应该将我的类分成两个文件,用于定义类的头文件和用于实现类的.cpp文件。
我真的应该为每节课做吗?因为上面的头类编译得很好,并且将它真正地分成两个文件似乎太简单了,也许只有大型类才能按惯例分开?有什么建议吗?
答案 0 :(得分:5)
您确实应该将.h和.cpp对中的声明和定义(或接口和实现)分开。
当您使用多个相互依赖的源文件时,这个单独编译模型背后的原因就变得清晰了。由于标题可能遍布整个地方#include'd,因此分离允许您对实现进行更改,而无需重新编译使用该接口的所有代码 。
节省时间可能非常重要,特别是在对一个文件进行快速编辑时。
(.h / .cpp配对约定的值得注意的例外是模板类 - 它确实存在于.h文件中 - 但这是另一个故事。)
答案 1 :(得分:3)
简答:是的。这样,如果修改类实现(不是接口),则使用您的类的客户端不必重新编译,而只需链接与修改后的实现相对应的新目标文件。
答案很长:阅读the C++ compilation model。
答案 2 :(得分:-1)
是。你应该分开。你在写C ++。不是Java。去找一本书/教程来解释它。