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