C++ 对象的定义和实例化

C++ 对象的定义和实例化,c++,class,object,definition,object-lifetime,C++,Class,Object,Definition,Object Lifetime,据 一个类就像一个蓝图,一个对象就像一座用它建造的房子 蓝图 您可以拥有许多具有相同布局/平面图的房屋(阅读类), 但每个都是它自己的实例(读取对象)。每个人都有自己的主人, 家具等 请注意,还有一些对象的蓝图不是类(例如。 整数) 总之,有不同类型的对象(例如int、float等)。您可以创建用户定义的类型,称为“类” C++中,“对象”是用于任何类型的实例,包括类和基本类型。 但是根据 对象是类的实例化。就变量而言,a 类将是类型,对象将是变量 那不是不准确吗?对象可以是类的实例化,但也可

一个类就像一个蓝图,一个对象就像一座用它建造的房子 蓝图

您可以拥有许多具有相同布局/平面图的房屋(阅读类), 但每个都是它自己的实例(读取对象)。每个人都有自己的主人, 家具等

请注意,还有一些对象的蓝图不是类(例如。 整数)

总之,有不同类型的对象(例如int、float等)。您可以创建用户定义的类型,称为“类”

C++中,“对象”是用于任何类型的实例,包括类和基本类型。

但是根据

对象是类的实例化。就变量而言,a 类将是类型,对象将是变量

那不是不准确吗?对象可以是类的实例化,但也可以是基本类型的实例

那么什么是实例化?
创建基本类型(例如
intx=3;
)的实例是否被视为“实例化”?因为从技术上讲,它是在创建一个类型的实例。

对象就是一个类型的实例

继续回答您的问题:

那句话(参考文献之一)不准确吗?对象可以是实例化 类的实例,但它也可以是基本类型的实例

你说得对

另外,创建一个基本类型的实例(例如int x= 3、 )是否被视为“实例化”?因为它在技术上创造了一个 类型的实例

再一次,正确


个人建议:不要过于担心确切的定义,把更多精力花在“通过编写代码学习”上

实例化是如何定义的

好吧,既然你坚持,那么我就请你回过头来:

你在网上或书中找到的所有定义都不是权威性的。这些东西唯一的权威是C++标准:这里偷看:正如您所见,该标准过于技术化,难以解析和理解。这是因为它不是用来学习的,它是用来彻底明确地定义语言的语法和语义的。这是编译器实现者在编写编译器时使用的文档,用来将该甜蜜的C++源代码转换成机器代码。 <> P>因为标准不是学习C++的一种方式,每个人都提出了自己的定义和术语,以便更容易地传达有时更复杂的事情。在这样做时,有时您看到的定义是不完整的,或者有点错误,或者不适用于奇怪的情况。你会发现不同的作者使用的相同术语略有不同。这是件坏事吗?也许吧,但不会太多。学习时,重要的是掌握简单的概念和工具,这样你就可以一步一个脚印地完成任务。失去“严格的彻底性”对imho来说是一个很小的代价,但我明白这会让那些认真对待学习材料中每一个单词的人感到困惑

回到你的问题:在标准中,据我所见术语“实例化”并没有在这个意义上使用,而是用于“模板实例化”,这是另一回事

但是没关系,我们不需要标准来理解一个简单的概念。对于您的上下文,实例化是对象的创建。这是一个非常简单的概念,不要想得太多


<> C++标准使用“实例化”来实现不同的目的,但是您仍然可以理解这个概念。如果你愿意,可以给它起个别的名字。

性病也不是权威性的。它充满了矛盾和明显的问题;“归根结底,编译器作者的直觉是权威的。”好奇的家伙,我强烈反对。它可能有缺陷并包含不一致性(我不知道是否有),但它是由国际标准化组织维护的标准。它尽可能的权威。请指出一个例子,std与知识渊博的程序员的常识和直觉不一致,std最终获胜。@curiousguy“权威:从官方来源出发,要求遵守或服从”没有一个编译器遵循这样一个荒谬的想法,即转换为基类的指针仍然指向派生最多的对象。没有一个用户程序符合这样的想法:永远不能使用字符串文字(因为它的生命周期永远不会开始)。或者你不能编写任何机器翻译程序,因为机器翻译语义没有定义,因为定义它的唯一方法是顺序一致性。cplusplus.com有很多这样的错误,在这里你会发现人们建议避免使用它