一个类有多个实现文件

And*_*son 15 c++ gcc

在多个源文件上实现单个类(一个.h)有什么问题吗?我意识到这可能是单个类中代码太多的症状,但是它在技术上有什么问题吗?

例如:

foo.h中

class Foo
{
   void Read();
   void Write();
   void Run();
}
Run Code Online (Sandbox Code Playgroud)

Foo.Read.cpp

#include "Foo.h"
void Foo::Read()
{
}
Run Code Online (Sandbox Code Playgroud)

Foo.Write.cpp

#include "Foo.h"
void Foo::Write()
{
}
Run Code Online (Sandbox Code Playgroud)

Foo.Run.cpp

#include "Foo.h"
void Foo::Run()
{
}
Run Code Online (Sandbox Code Playgroud)

Gun*_*iez 16

这可以.最后,它将全部链接在一起.

我甚至看过代码,其中每个成员函数都在不同的*.cpp文件中.


Mal*_*glu 6

这是合法的,它有一些(!?)优点......

如果将可执行文件与此类的静态库链接,则只会使用已使用的函数.这对于有限资源的系统非常方便.

您还可以隐藏某些功能的实现细节.两个人可能在不知道彼此的情况下实现类的一部分.方便国防部项目.

如果您查看任何CRT源,您将看到相同的模式......


fbr*_*eto 5

不,技术上没有任何问题。链接器会将 Foo 的所有部分整合到最终的二进制文件中。