c++ - 我应该同时使用头文件和 cpp/源文件吗?

标签 c++ header-files

我有一个 Mammal.h 文件,内容如下:

#ifndef MAMMAL_H
#define MAMMAL_H

class Mammal
{
public:
    void Speak();
};

#endif

我的 CPP 文件如下所示:

#include "stdafx.h"
#include "Mammal.h"
#include <iostream>

void Mammal::Speak()
{
    using namespace std;

    cout << "Speaking";
}

在这里可以看到我对这段代码的使用:

#include "stdafx.h"
#include "Mammal.h"

int main()
{
    Mammal *mammal = new Mammal();

    mammal->Speak();
}

但是,我可以在头文件中这样做:

#include "stdafx.h"
#include <iostream>

#ifndef MAMMAL_H
#define MAMMAL_H

class Mammal
{
public:
    void Speak()
    {
        using namespace std;

        cout << "Speaking";
    }
};

#endif

我还没有真正定义偏好...但我确实看到两者都有效。这些方法中的任何一种都有优点或缺点吗?

最佳答案

尝试从多个地方调用该代码——因此#including 头文件在多个源文件中——你会在第二种方法中看到问题。如果您对同一函数有多个定义,即使它们是相同的,链接器也不喜欢它。

关于c++ - 我应该同时使用头文件和 cpp/源文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5839654/

相关文章:

c++ - 当向其添加子选项卡时,如何使 qtabwidget 实例自动调整大小?

c++ - 使用函数的返回类型作为另一个模板函数调用

c++ - move 语义可以帮助构建在 std::array 上的用户定义容器吗?

c++ - 分配数组与初始化指针

头文件中的更改 - 何时在 c 中重新编译

c++ - 合并两个已排序的 vector

c++ - 如何指定可以打开的文件类型

c++ - 不同类型的C/C++头文件有什么区别

c++ - 在 C++ 中内联所有方法,没有 Cpp 文件?

c - 如何使用包含线程的个人库编译 C 程序