整个类在头文件中没有.cpp文件

The whole class in header file without .cpp file

本文关键字:文件 cpp      更新时间:2023-10-16

我一直在使用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++编译模型