所以我们正在进行一些同行评审,这种轻微的分歧上升了,
是否应该定义默认构造函数,即使它什么也不做,或者我们应该让编译器定义它?
到目前为止,没有任何一方能够提出任何重大优势或劣势.每种风格的优点和缺点是什么,哪一种被认为是"清洁"?
Typ*_*eIA 11
这很可能会以"主要基于意见"的形式结束,但我可以给你一些客观要点:
如果您没有定义默认构造函数,并且某人稍后添加了带参数的构造函数并忘记添加无参数构造函数,则默认构造函数将消失,这可能会破坏现有代码.明确定义它可以确保即使有人稍后添加了重载的构造函数,无参数构造函数仍然存在.
如果构造函数在头文件中声明并且在行外定义(在.cc/.cpp文件中),则稍后可以使用仅需要重新链接的相关代码修改实现.在事实之后声明构造函数必然会影响标题,需要重新编译依赖代码.
明确定义它需要更多的输入并产生更多的代码行.与此相关的成本很小但非零成本(输入时间,以及读取代码读取它所花费的时间).
是的,这些观点是矛盾的.我想你会发现,当时的舆论是不明确定义,但只要语言是关心有没有正确或不正确的方式.(除非您需要将您的类型作为聚合.)