在不同的文件上有C++类的任何方法都可以将方法定义保留在类中
Any way to have C++ classes on different files keeping the method definition within the class?
文件:A.cpp
void A::increment()
{
i++;
}
int A::get_i()
{
return i;
}
文件:A.hpp
#ifndef HEAD_H
#define HEAD_H
class A
{
private:
int i;
public:
void increment();
int get_i();
};
#endif
我有java背景,我将从它转向C++。我坚持每个文件保留一个类以获得干净的代码。然而,我不喜欢使用范围解析操作符的想法,因为它从类中删除了类定义,看起来很难看。
有没有什么方法可以将类定义保留在class
构造中?
注意:我已经访问过这个和这个,它不能回答我的问题。
是的,您可以在标题中内联定义它。然后你可以#包括所有的代码
class A
{
void increment()
{
i++;
}
};
然而,这是有后果的。如果对实现进行更改,则必须完全重新编译包含该头的每个文件(以使用该文件(。
在这种情况下,我们不应该假设语言A只是语言B,有一些细微的变化。使用两个文件的头/实现模式是C++的一个非常重要的部分,在试图假装它是Java和使用Java的单文件方法论时会遇到很多困难。
虽然它不是很DRYis,但我认为分离的定义和实现通常是在C++中完成的。
无论如何,您可以将所有类代码移动到头文件中,但最终会增加编译时间,因为每个使用A的cpp文件都会编译整个代码。这也会增加二进制文件的大小。如果你有很多类使用许多其他类,你可能会导致编译时间和大小的增加,很多时候如果你用C++的方式来做的话。(如果你的链接器不是很聪明,但我想所有的优化都是在编译时完成的(
您也可以将所有的类定义移动到cpp文件中,但我想这会在几乎所有非平凡的情况下使事情更加混乱。
相关文章:
- C++映射有2个键,这样任何1个键都可以用来获取值
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 任何人都可以查明我的递归函数中的错误吗?
- 如何构造一个类型特征,可以判断一个类型的私有方法是否可以在另一个类型的构造函数中调用?
- Qt C++创建一个所有类都可以访问的全局变量
- 任何方法都可以在C++中比较数据结构中的许多方法
- 交叉和计算,任何人都可以解释代码吗?
- 我的合并排序没有给出正确的排序数组,任何人都可以解释一下吗?
- 任何人都可以解释这个初始值设定项代码吗?
- 如何使用C++共享目录,以便每个人都可以访问
- 任何人都可以在带有JNI的Android Studio上帮助我解决此错误,是否缺少一些内容?
- 如何制作一个结构程序,在其中可以存储无限量的数据,以便每次您想要时都可以将另一个产品添加到列表中?
- 似乎没有任何读取文件的方法可以工作,所有方法都不返回任何东西-C++
- 任何比 pow() 更快的方法都可以在 C++ 中计算 10 的整数幂
- 在c++中,任何更好的方法都可以做到这一点,计算谜题的解决方案(49!结果,49个循环)
- QTcpSocket每~0.5s才读取一次数据,即使是非常小的数据包,任何方法都可以加快速度
- 在不同的文件上有C++类的任何方法都可以将方法定义保留在类中