我正在为学校做一个项目,教师坚持要把所有代码放到一个.cpp文件中(为了方便他的评分).我想在这个文件中定义多个类.这样做会遇到任何问题吗?
RED*_*AIR 29
没有必须遵循的规则(如在java中).您可以自由地在您喜欢的命名文件中放置和命名类(除了后缀).
然而,这是另一个问题,如果这是良好的做法(它不!).
Bri*_*ndy 10
是的你可以.这很容易验证.
class C
{
};
class D
{
};
int main(int argc, char**argv)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您可以完美地在同一个文件中声明和定义了几个类.
但是,当一个类依赖于后来的另一个类时,你必须要小心.如果A类要成为另一个B类的成员,则编译器需要其完整声明(以便它知道其大小),并且您需要将其放在文件的更高位置.如果这个成员只是一个指针(它的大小与指向的类的大小无关),那么指向类的简单前向声明就足够了.
请注意,使用该#include机制,无论如何都会发生这种情况:预处理器将所有包含的文件"复制粘贴"到正在编译的文件中.对于编译器来说,它是一样的.
通常,只有在以下情况下,才应将多个类放在一个文件中:
这些类之间的联系非常紧密。例如,如果一个类定义了自己的迭代器,则将该迭代器类与用于迭代的类放在同一文件中可能是合适的。
其中一类用于公共消费,其余的类用于实现它。例如,如果您使用“ pimpl”惯用语,则这将适用,其中公共类包含的唯一成员是指向私有类的指针。在这种情况下,将私有/隐藏的类放在与使用它们的公共类相对应的源文件中是合适的。
在这两种情况下,对于整个项目,应该一次决定是否将“公共帮助程序”(例如迭代器)和“私有帮助程序”(例如pimpl)类放在同一个源文件中,还是放在另一个源文件中。始终如一。
| 归档时间: |
|
| 查看次数: |
35398 次 |
| 最近记录: |