在 C++ 或 Objective-C 中,术语“构造器”是否与“初始化器”完全相同?
原因是,每当我看到“构造函数”这个词时,总感觉有些模糊,因为也感觉构造函数负责在内存空间中设置对象,而实际上构造函数只是“初始化”。所以“构造器”这个词可能会让人感到困惑,因为它感觉像是 alloc 和 init 的组合,而初始化器这个词非常清楚,它只是设置值。
上述说法普遍正确吗?
在 C++ 或 Objective-C 中,术语“构造器”是否与“初始化器”完全相同?
原因是,每当我看到“构造函数”这个词时,总感觉有些模糊,因为也感觉构造函数负责在内存空间中设置对象,而实际上构造函数只是“初始化”。所以“构造器”这个词可能会让人感到困惑,因为它感觉像是 alloc 和 init 的组合,而初始化器这个词非常清楚,它只是设置值。
上述说法普遍正确吗?
构造函数需要一些原始存储,并在那里构造一个对象。
初始化器是用于初始化某些变量的值。
虽然您可能有一个观点,即所谓的构造函数可以被称为初始化器,但我怀疑它是否真的被考虑用于 C++ 或 Objective-C。在 C++ 或 Objective C 出现之前,“Initializer”已经在 C 中具有目前公认的含义。由于术语在 C 中已经广为人知,我无法想象有人试图重新定义它以在基于 C 的语言中表示完全不同的东西。
不,它们不一样。
初始化器是 C++ 语法的一部分,而不是函数。例如:
std::string s = "abcd";
初始化程序是= "abcd"
.
当变量定义中存在初始化程序时,它提供将传递给构造函数的参数。
您可以在标准的第 8.5 节中阅读有关此内容的更多信息。
构造函数保证在分配时运行,并用于将对象初始化为某种定义的状态。在 C++ 中,我们称之为RAII。正如您所说,初始化程序只是“设置值”或“初始化对象”,并且不需要在分配时运行。