在C ++或Objective-C中,术语“构造函数”与“初始化程序”完全相同吗?
原因在于,每当我看到术语“构造函数”时,感觉有点模糊,因为它也感觉构造函数负责在内存空间中设置对象,而实际上,构造函数只是“初始化” 。所以术语“构造函数”可能会令人困惑,因为它感觉就像是alloc和init组合在一起,而术语初始化程序非常清楚它只是设置值。
以上陈述一般是否正确?
答案 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语言完全不同的东西。