为什么构造函数的名称与类名相同?
最佳答案
根据 Stroustrup 的说法,因为新功能的替代“一直是困惑的根源”。参见 The Design & Evolution of C++,第 3.11.2 节,尽管这是我引用的完整理由。
编辑:正如人们所指出的,有许多替代解决方案。例如,Smalltalk 是这样做的:
myclass new
向 myclass 类对象发送"new"消息。显然,这里的 C++ 解决方案有点傻:
myclass myclass
显然不明智。
Delphi,OTOH,通过这样标记允许任何命名函数成为构造函数:
constructor Create;
constructor FooBar;
都是任何类的 OK 构造函数名称。与 Smalltalk 一样,您需要在类对象上调用它们:
myclass.Create;
在所有这些解决方案中,我认为 C++ 是最优雅的,而且我明白为什么它几乎被后继语言普遍采用。
关于c++ - C++ 中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624101/