c++ - C++ 中的构造函数

标签 c++ constructor language-design

为什么构造函数的名称与类名相同?

最佳答案

根据 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/

相关文章:

c# - 为什么我不能调用基类构造函数?

iphone - 在 iPhone 应用程序中使用 C++ 结构

syntax - 是否有函数式编程语言具有用于更改对象部分的语法糖?

collections - Haskell "collections"语言设计

c++ - 加权随机n次优化

c++ - C++文件的参数

C++ gtk打开多个窗口

c++ - 在已经初始化我的 2d 矩阵后动态增加行数

java - 在 Java 中运行构造函数代码之前是否已初始化字段?

Python:是否有语法级支持从元组中解包到*匿名*函数的参数?