我有一个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

我还没有真正定义首选项...但是我确实看到两者都可行。这两种方法都有优点还是缺点?

最佳答案

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

10-07 19:02