1
4
只要我们谈论C++,唯一权威的来源就是ISO标准。除了类和函数模板,它从来没有用过“实例化”这个词。 但是,它确实使用了“实例”这个词。例如:
注意,在C++语言中,
自
|
2
3
据我所知,你只是在问术语。C++标准唯一真正的区别是POD类型和非POD类型,其中非POD类型具有用户定义的构造函数、成员函数、私有变量等特征,而POD类型不具有。
除了(和重叠)C++之外,面向对象编程中的“实例”的概念通常是指在内存中分配对象的空间,然后用构造函数初始化它。无论是在堆栈上还是堆上,还是在内存中的任何其他位置上,这在很大程度上都是不相关的。 但是,C++标准似乎考虑所有数据类型“对象”,例如,在3.9中,它表示:
因此,基本上,C++标准本身唯一的区别是POD与非POD。 |
3
2
在C++中,“实例”和“实例化”只与类关联。 但是请注意,这些单词也是具有会话意义的英语单词。 “pointer”当然是英语用法中的一个类,指针当然是该类的一个实例。 但是在C++中,“指针”不是一个类,指针不是一个类的实例。 另请看-有多少天使在弹头上 |
4
2
一个“实例”的概念并不是C++所固有的东西——基本上你有“具有构造函数和不存在的东西”。 所以,所有类型都有一个大小,例如int通常是4个字节,一个包含两个int的结构将是8,依此类推。现在,在这个结构上加上一个构造函数,它开始看起来(和行为)像一个类。更具体地说:
现在,这些类型中的任何一个都可以 堆栈 或在 堆 . 当你在 堆栈 与上面的“int foo;”类似,在其作用域消失后(例如在函数调用的末尾)消失。如果你用“新”创造了一些东西,它会继续 堆 在你打电话之前都有自己的住处 删除 关于它。在这两种情况下,构造函数(如果有)都将在实例化期间调用。 |
5
1
做“new int”是不常见的,但它是允许的。甚至可以向构造函数传递0或1个参数。我不确定“new int()”是否意味着它是0初始化的(我想是的),与“new int”不同。 当您在堆栈上定义一个值时,通常不称之为“分配内存”(虽然理论上它在堆栈上获取内存,但该值可能只存在于CPU寄存器中)。 文字不一定在程序内存中得到地址;CPU指令可以直接对数据进行编码(例如,将42放入寄存器B)。可能任意的浮点常量都有一个地址。 |
Schadre · C-plus编码错误 2 年前 |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
amirreza870 · Python OOP-更改类文本 2 年前 |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |