![]() |
1
12
是吗? 这取决于你如何定义“面向对象”。
如果你定义它,Java的方式就是“一切都必须有形式的语法”。
但幸运的是,也有一些人认为“面向对象”应该与 行为 而不是在对象上使用的语法。从本质上讲,它应该归结为 Wikipedia 佩奇说:
注意,它对语法没有任何影响。它没有说“并且必须通过指定一个对象名,后跟一个点,后跟函数名来调用每个函数”。
考虑到这个定义,
C++大师很久以前就意识到了这一点,并且写了一些文章,如 this . 对象的接口是 不 只是一组成员方法(可以用点语法调用)。它是一组可以操作对象的函数。他们是会员还是朋友并不重要。它是面向对象的,只要对象能够保持一致,也就是说,它能够防止 任意的 它的功能。
所以,为什么会
OOP背后的一个关键目标是允许更多的可重用代码。
如果
|
![]() |
2
11
这个
在任何情况下,动态对象分配都是特殊的,因为编译器分两步分配内存和构造对象,并添加代码以处理任何一步中的异常,确保内存不会泄漏。使其看起来像成员函数调用而不是特殊操作可以被视为隐藏操作的特殊性质。 |
![]() |
3
3
我觉得最大的困惑是 新的 有两种含义:一种是内置的新表达式(它结合了内存分配和对象创建),另一种是重载运算符new(它只处理内存分配)。第一,据我所见,是一些你不能改变其行为的东西,因此把它伪装成一个成员函数是没有意义的。(或者它必须是——或者看起来像——一个没有类可以实现/重写的成员函数!!) 这也会导致另一个不一致:
C++不是纯OOP语言,不是所有的事物都是对象。 C++还允许使用自由函数(这是一些作者和SC+L设计中的示例集所鼓励的),C++程序员应该对此感到满意。当然,新的表达式不是一个函数,但是我看不出含糊地提示自由函数调用的语法如何能在自由函数调用非常常见的语言中让任何人望而却步。 |
![]() |
4
2
请阅读代码(它有效),然后你会有不同的想法:
|
![]() |
5
1
|
![]() |
6
1
实际上,可以用类似
但事实并非如此。语法也不是这样的:你可以区分
我认为原因是记忆管理。在C++中,与许多其他面向对象语言不同,内存管理是由用户完成的。虽然标准库和非标准库都包含垃圾回收器,以及管理内存的各种技术,但没有默认的垃圾回收器。因此,程序员必须
看见
这个
除非已经超载,否则使用
|
![]() |
7
0
我想没有理由。它是A=新的A,因为它是第一个这样起草的。事后看来,它应该是a=a.new(); |
![]() |
8
0
为什么每个班级都应该有新的学生? 我认为根本不需要,因为新的目标是 分配适当的内存并通过调用构造函数构造对象。 因此,新的行为是独特的,独立的,不分阶级。那么为什么不使是可恢复的呢? 当您想自己进行内存管理时,您可以覆盖new(即只分配一次内存池,并根据需要返回内存)。 |
![]() |
dallin · 数组中的逗号运算符是否有名称? 10 年前 |