整个类在头文件中没有.cpp文件
The whole class in header file without .cpp file
我一直在使用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文件用来实现类。
我真的应该对每节课都这么做吗?因为上面的头类编译得很好,而且看起来太简单了,不能把它真正分成两个文件,也许只有大的类应该按照约定分开?有什么建议吗?
你真的应该把你的声明和定义(或者接口和实现)以。h和。cpp对分开。
当您处理的不仅仅是几个相互依赖的源文件时,这种单独编译模型背后的原因就变得清晰起来。由于头文件可能被#include在所有地方,这种分离允许您对实现进行更改,而无需重新编译使用接口的所有代码。
节省的时间是显著的,特别是在对单个文件进行大量快速编辑时。
(.h/.cpp配对惯例的一个值得注意的例外是模板化类——它们确实只存在于。h文件中——但那是另一回事)。
简短的回答:是的。这样,如果你修改了一个类的实现(不是接口),使用你的类的客户端不必重新编译,而只需要链接与修改后的实现相对应的新对象文件。
长话短说:阅读c++编译模型
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 为什么我的主文件.cpp不打印头文件中的任何内容
- 生成文件错误 - 找不到文件 - *.cpp
- 如何在文件.cpp gtkmm中声明小部件
- 没有实现文件(.cpp)的派生类
- 如何使用"CMakeLists.txt"中的add_library将整个文件(.cpp,.h等)包含在目录中
- 如何在Linux / Windows操作系统上使用文件*.cpp一步编译下面的代码
- 关于 Linux .so 文件无法链接到主文件.cpp文件
- 文件.cpp从Windows到Linux
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 如何将文件.cpp编译为本机编译
- 使用模板类时,似乎无法包含除 main 以外的任何 cpp 文件.cpp
- 无法编译C++文件.cpp。C++98模式
- 为什么C++头文件不需要包含实现文件 (.cpp)
- 如何访问位于独立文件(.cpp)中的非成员函数
- 如何在Visual Studio Code中通过键盘快捷键切换头文件/cpp文件
- 如何将数据从stringstream写入文件(CPP)
- 为什么filestream不把空白写入文件cpp ?