我总是看到在类中的任何其他内容之前声明构造函数和析构函数。这只是一个很好的编码标准,每个人都使用它来更容易找到它们,还是有它背后的原因。例如,像下面的代码那样在构造函数之前声明一个变量有什么问题吗?
class A
{
public:
int aVar;
A() :aVar(20) {}
~A() {}
};
我总是看到在类中的任何其他内容之前声明构造函数和析构函数。这只是一个很好的编码标准,每个人都使用它来更容易找到它们,还是有它背后的原因。例如,像下面的代码那样在构造函数之前声明一个变量有什么问题吗?
class A
{
public:
int aVar;
A() :aVar(20) {}
~A() {}
};
没有特别的理由在其他所有事情之前声明构造函数,这只是一个约定或编码实践。这就像声明公共函数,然后是公共成员,然后是私有函数,然后是私有成员,然后按字母顺序对函数进行排序。
唯一有原因的排序标准是不按字母顺序声明成员,而是按类型大小顺序声明成员,因为这是拥有较小类的简单方法。
就个人而言,我将枚举和 typedefs 放在构造函数和析构函数之前。
习俗。构造函数通常是你想知道的第一件事——除非你有一个对象,否则你不能做太多事情,把析构函数(和赋值)放在它们旁边似乎很自然。不过也有例外;很多人会根据访问权限进行分组,所以如果构造函数是受保护的,而析构函数是公共的(而赋值运算符是私有的),他们不一定会被分组。
根本不是,这只是编码风格的问题。
没有任何原因,除了个人喜好。除了纯粹的审美原因,方法的放置是不相关的。
我通常在类中为构造函数和析构函数、成员和方法有单独的部分,并通过公共、私有和受保护的方式将所有这些分开。在声明中首先使用构造函数是有意义的,因为构造函数通常是您在类之外使用的第一件事。当然也有一些例外,例如你通常从不调用构造函数的单例。
真的只是很好的形式,它对解释器没有任何影响,而且这种形式可能是对早期语言的回归,早期语言可能需要在随后调用它之前声明一个函数......
回答
像下面的代码那样在构造函数之前声明变量有什么问题吗?
好吧,它的“错误”在于您有一个公共变量。这在原则上也可以,但大多数 C++ 程序员更喜欢将所有变量都设为私有或公开(作为 POD 结构)。
假设你的意思
class A {
int aVar;
public:
A() : aVar(20) {}
~A() {}
};
这确实很好,事实上,FWIW 我喜欢将所有数据成员放在首位:这是 IMO 在尝试了解类如何工作时需要知道的第一件事。
(许多程序员现在会说,文件的主要目的不是.h
教人们类如何工作,而是它的接口是什么。我不同意:这就是例如 Doxygen 文档的用途;您只需费心查看实际如果您想了解内部实现,请使用源代码。)
此外,IMO 使用关键字启动所有类然后使用 恢复它
是很奇怪的,但这几乎不是一个论点。public
private
当然,整件事实际上只是关于约定:如果项目中的所有类声明都有特定的布局,你应该坚持下去,否则一切都会令人困惑。