我总是在类中的任何其他内容之前看到构造函数和析构函数。这只是一个很好的编码标准,每个人都使用它来更容易找到它们,或者是否有其背后的原因。例如,在构造函数之前声明变量是否有任何问题,如下面的代码所示?
class A
{
public:
int aVar;
A() :aVar(20) {}
~A() {}
};
答案 0 :(得分:3)
没有特别的理由在其他一切之前声明构造函数,它只是一个约定,或者是一个编码实践。这就像是按字母顺序声明公共功能,然后是公共成员,然后是私人功能,然后是私人成员和订单功能。
唯一有理由的排序标准是不按字母顺序但按类型大小顺序声明成员,因为这是获得smaller class的简单方法。
就个人而言,我在构造函数和析构函数之前放置了枚举和typedef。
答案 1 :(得分:2)
公约。构造函数通常是您想要的第一件事 知道 - 你有一个对象,你做不了多少, 并且将析构函数(和赋值)放在一起似乎很自然 在他们旁边。但也有例外;很多人 将根据访问权限进行分组,因此如果构造函数是 保护,但析构函数公共(和赋值 运营商私人),他们不一定会被分组。
答案 2 :(得分:1)
完全没有,这只是编码风格的问题。
答案 3 :(得分:1)
没有任何理由,除了个人偏好。除纯粹美学原因外,方法的放置无关紧要。
答案 4 :(得分:1)
我通常在类中有单独的部分用于构造函数和析构函数,成员和方法,并通过public,private和protected分隔所有这些部分。将构造函数放在声明中是有意义的,因为构造函数通常是您在类中使用的第一个东西。当然,例如对于通常从不调用构造函数的单例,有一些例外。
答案 5 :(得分:0)
真正的好形式,它对解释器没有任何影响,而且表单可能是对早期语言的回归,可能需要在随后被调用之前声明的函数...
答案 6 :(得分:0)
回答
在构造函数之前声明变量是否有任何问题,如下面的代码所示?
嗯,它的“错误”在于你有一个公共变量。原则上这也是好的,但是大多数C ++程序员喜欢将所有变量设置为私有或全部公开(作为POD结构)。
假设你的意思
class A {
int aVar;
public:
A() : aVar(20) {}
~A() {}
};
确实非常好,实际上FWIW我喜欢将所有数据成员放在首位:IMO是您在尝试理解类如何工作时首先需要知道的。
(许多程序员现在会说.h
文件的主要目的不是教人们如何使用类,只是它的界面是什么。我不同意:那是什么,例如Doxygen文档就在那里;如果你想了解内部实现,你只需要查看实际的源代码。)
另外,使用public
关键字开始所有课程然后用private
还原它是奇怪的IMO,但这不是一个论点。
当然,整个事情只是关于约定:如果项目中的所有类声明都有一定的布局,你应该坚持下去,其他一切都会让人感到困惑。