构造函数与初始化程序完全相同吗?

时间:2012-04-23 02:08:22

标签: oop constructor initializer

在C ++或Objective-C中,术语“构造函数”与“初始化程序”完全相同吗?

原因在于,每当我看到术语“构造函数”时,感觉有点模糊,因为它也感觉构造函数负责在内存空间中设置对象,而实际上,构造函数只是“初始化” 。所以术语“构造函数”可能会令人困惑,因为它感觉就像是alloc和init组合在一起,而术语初始化程序非常清楚它只是设置值。

以上陈述一般是否正确?

3 个答案:

答案 0 :(得分:0)

不,他们不一样。

初始值设定项是C ++语法的一部分,而不是函数。例如:

std::string s = "abcd";

初始值设定项为= "abcd"

当变量定义中存在初始值设定项时,它会提供将传递给构造函数的参数。

您可以在标准的第8.5节中阅读更多相关信息。

答案 1 :(得分:0)

保证构造函数在分配时运行,并用于将对象初始化为某个已定义的状态。在C ++中,我们称之为RAII。正如你所说,初始化程序只是“设置值”或“初始化对象”,并且不需要在分配时运行。

答案 2 :(得分:0)

构造函数需要一些原始存储,并在那里构造一个对象。

初始值设定项是用于初始化某个变量的值。

虽然您可能有一点,即所谓的构造函数可以被称为初始化器,但我怀疑它是否真的被认为是C ++或Objective-C。在C ++或Objective C出现之前,“初始化程序”已经在C井中具有其当前接受的含义。由于术语在C中已经众所周知,我无法想象有人试图将其重新定义为基于C语言完全不同的东西。