在大多数 OOP 书籍和文章中,我们读到了类似这样的关于构造函数的内容:
构造函数是类中的一种特殊方法,它的名称与类名相同,并且没有返回类型。
所以我们的构造函数是这样的形式:
class MyClass {
public: /* no return type */ MyClass();
}
好吧,这个定义与 OOP 原则有些冲突:方法必须有一个返回类型(即使void
),并且在一个对象中,我们不能有 2 个同名的成员,所以一个方法不能与类的名称同名。
我认为我们可以将定义更改为这样的:
构造函数是类中的一种特殊方法,它没有名称——匿名或无名方法——它的返回类型是类(的类型)。
所以我们会有:
class MyClass {
public: MyClass /* no method name */ ();
}
在第二个定义中:我们被允许在大多数 OOP 语言中使用匿名方法,并且我们的方法具有真正的返回类型。
var obj = new MyClass();
构造函数被调用,并且obj
是 的一个实例MyClass
,所以构造函数有一个返回值。另一方面,new MyClass()
是在名为 的对象的蓝图上调用可访问匿名方法的协定MyClass
。
你怎么看?我错了还是我们可以使用这个定义或从这个角度来看待构造函数?
更新: 为什么我会下台并关闭选票?请解释。