C++ 初始化和实例化变量之间有什么区别?

C++ 初始化和实例化变量之间有什么区别?,c++,variables,initialization,instantiation,C++,Variables,Initialization,Instantiation,初始化和实例化变量之间有什么区别 我已经搜索过问题,我只看到初始化变量(赋值给变量的初始值)和实例化对象。 < P> C++的规范语言规范是ISO标准,并且该文档只使用了“强实例化”的模板< >。所以,如果堆栈溢出中有人使用“实例化”作为“初始化”的同义词,那么这在形式上是错误的 请随意下载并在PDF中搜索“实例化” 甚至您在问题中使用的堆栈溢出“实例化”标记也字面上说: 在C++语言中,实例化是创建类的过程。 或类模板或函数模板中的函数 因此,实例化的结果不是对象,而是从模板创建的类或函数。

初始化和实例化变量之间有什么区别


我已经搜索过问题,我只看到初始化变量(赋值给变量的初始值)和实例化对象。

< P> C++的规范语言规范是ISO标准,并且该文档只使用了“强实例化”的模板< <强> >。所以,如果堆栈溢出中有人使用“实例化”作为“初始化”的同义词,那么这在形式上是错误的

请随意下载并在PDF中搜索“实例化”

甚至您在问题中使用的堆栈溢出“实例化”标记也字面上说:

在C++语言中,实例化是创建类的过程。 或类模板或函数模板中的函数

因此,实例化的结果不是对象,而是从模板创建的类或函数。相反,初始化的结果是一个对象



但是,请注意,使用C++14时,情况就不那么清楚了。变量模板实际上是实例化和初始化的。但无论如何,变量模板是一件相当罕见的事情。

也许您期望的比实际情况更多。您可以实例化一个类,即使用
new
创建它。并且变量可以在声明时初始化。当声明一个类的变量并初始化它时,就是在用实例初始化一个类。实例化指的是创建一个对象,通常是一个名称。初始化是创建对象的过程的一部分,不管对象是否命名,它都会给出初始状态。@Clifford:关于英语的问题,总是有。关于计算机科学的问题,有。对于一个带有C++标签的堆栈溢出问题,我保留了一个C++答案的权利。@彼得:不,我根本不考虑面向对象的范例。我也很清楚你在这里解释的任何东西,谢谢,但是这是一个C++问题。彼得:哦,来吧。正如我一样,这些标签几乎肯定是由堆栈溢出UI自动建议的,而C++是由OP明确添加的标记。无论如何,这都不重要。如果有人问A和B,则该问题应解释为“B背景下的A”,反之亦然,而不是关于A和关于B的两个独立问题。此类问题应以“过于宽泛”的方式进行投票。如果OP不关心C++,而是CS定义,那么问题(和堆栈交换站点)是错误的。@哈默德:初始化是英国英语。作为一个欧洲公民,我更喜欢英国英语。这些术语在计算机科学中具有与C++语言无关的一般含义:StimaTy=创建一个实例,初始化=赋值一个初始值。这只是简单的英语-你对其他答案的评论是错误的,这是不公平的。C++语言标准可能只使用模板中的术语,但这并不意味着该术语在其他上下文中没有位置——术语“C++”或“模板”的存在。@克利福德:这不是计算机科学问题或语言问题,而是C++问题。如果有人在C++的上下文中特别询问单词的正确含义,有人给出了一个错误的答案,甚至没有提到模板,那么这是一个公平的投票。这些词也早于计算机科学,而这些词的祖先也早于英语。这不相关,不,但它是(线TEC++标准)用英语写的。之所以不使用该术语,是因为它对模板有特定的含义,之所以使用该术语,是因为它是应用于模板的动词。它同样可以有效地应用于其他领域。您只是简单地迂回地指出错误。@克利福德“初始化=分配初始值”,这是另一个在C++中不起作用的事情。赋值是对已初始化的对象执行的操作。这样一个具有一般意义的答案毫无意义,因为它是不正确的。