1

我总是看到在类中的任何其他内容之前声明构造函数和析构函数。这只是一个很好的编码标准,每个人都使用它来更容易找到它们,还是有它背后的原因。例如,像下面的代码那样在构造函数之前声明一个变量有什么问题吗?

class A
{
     public:
         int aVar;
         A() :aVar(20) {}
         ~A() {}
};
4

7 回答 7

3

没有特别的理由在其他所有事情之前声明构造函数,这只是一个约定或编码实践。这就像声明公共函数,然后是公共成员,然后是私有函数,然后是私有成员,然后按字母顺序对函数进行排序。

唯一有原因的排序标准是按字母顺序声明成员,而是按类型大小顺序声明成员,因为这是拥有较小类的简单方法。

就个人而言,我将枚举和 typedefs 放在构造函数和析构函数之前。

于 2013-02-18T10:40:05.473 回答
2

习俗。构造函数通常是你想知道的第一件事——除非你有一个对象,否则你不能做太多事情,把析构函数(和赋值)放在它们旁边似乎很自然。不过也有例外;很多人会根据访问权限进行分组,所以如果构造函数是受保护的,而析构函数是公共的(而赋值运算符是私有的),他们不一定会被分组。

于 2013-02-18T10:42:40.337 回答
1

根本不是,这只是编码风格的问题。

于 2013-02-18T10:38:49.500 回答
1

没有任何原因,除了个人喜好。除了纯粹的审美原因,方法的放置是不相关的。

于 2013-02-18T10:40:11.310 回答
1

我通常在类中为构造函数和析构函数、成员和方法有单独的部分,并通过公共、私有和受保护的方式将所有这些分开。在声明中首先使用构造函数是有意义的,因为构造函数通常是您在类之外使用的第一件事。当然也有一些例外,例如你通常从不调用构造函数的单例。

于 2013-02-18T10:41:37.257 回答
0

真的只是很好的形式,它对解释器没有任何影响,而且这种形式可能是对早期语言的回归,早期语言可能需要在随后调用它之前声明一个函数......

于 2013-02-18T10:39:52.693 回答
0

回答

像下面的代码那样在构造函数之前声明变量有什么问题吗?

好吧,它的“错误”在于您有一个公共变量。这在原则上也可以,但大多数 C++ 程序员更喜欢将所有变量都设为私有或公开(作为 POD 结构)。

假设你的意思

class A {
  int aVar;
 public:
  A() : aVar(20) {}
  ~A() {}
};

这确实很好,事实上,FWIW 我喜欢将所有数据成员放在首位:这是 IMO 在尝试了解类如何工作时需要知道的第一件事。
(许多程序员现在会说,文件的主要目的不是.h教人们类如何工作,而是它的接口是什么。我不同意:这就是例如 Doxygen 文档的用途;您只需费心查看实际如果您想了解内部实现,请使用源代码。) 此外,IMO 使用关键字启动所有类然后使用 恢复它
是很奇怪的,但这几乎不是一个论点。publicprivate

当然,整件事实际上只是关于约定:如果项目中的所有类声明都有特定的布局,你应该坚持下去,否则一切都会令人困惑。

于 2013-02-18T11:17:11.223 回答