gpt4 book ai didi

c++ - 为什么CPP文件名必须和H文件名一致?

转载 作者:行者123 更新时间:2023-11-28 03:04:04 24 4
gpt4 key购买 nike

首先,很抱歉问了这么愚蠢的问题。我只是觉得它很有趣,我很好奇想知道为什么。我有一个在 Base.h 中声明了虚析构函数的基类

#ifndef BASE_H_
#define BASE_H_

class Base {
public:
Base();
virtual ~Base();
};
#endif

然后我在 Child.h 中声明了一个子类继承基类

#ifndef CHILD_H_
#define CHILD_H_

#include "base.h"
class Child : public Base { // (1)
public:
Child();
};
#endif

现在制作一个main.cpp并放入基类虚析构函数的实现。

#include "Base.h"

Base::Base() {}
Base::~Base() {}

源代码是在 Ubuntu 13.04 中使用 Eclipse C++ Kepler 编译的。出现错误,提示 undefined reference to 'Base::Base()' at (1)。如果我将 main.cpp 更改为 Base.cpp,错误就会消失。

我可以知道为什么会这样吗?这是由于 Eclipse 中的配置造成的吗?如果是,我可以关闭此功能吗?或者这是由于最佳编程实践使源代码更易于管理?或者这是一个 C++ 规范?

最佳答案

标准中没有说明这不应该起作用,我也不认为 eclipse 会强制执行此布局。它确实更易于管理和常见,但绝不是必需的。

您可能没有将 main.cpp 添加到构建中并且它没有被编译。

关于c++ - 为什么CPP文件名必须和H文件名一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20122358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com