我寻找这一问题的语言应该具有以下特点:是否有一种允许对对象进行低级别访问的面向对象的语言?
- 编译为机器码,
- 有C++ - 风格的面向对象设计(可能受限于单类继承),
- 最好是从C系列(不要求),
- 允许处理未初始化堆栈分配的对象,
- 允许构造和析构函数为, INC的直接通话泸定控制如何,何时以及所有超类的构造函数/析构函数是否在被调用时,
- 允许直接读/写访问虚拟表和RTTI数据,
- 理想不是静态的和非静态区分成员函数(后者只会公开接受另一个参数
this
), - 可选:在异常期间允许流量控制(例如,调用析构函数和转发堆栈展开)。
斜体的三点出现在C++的幕后,试图干涉它们会导致未定义的行为,尽管在常见的实现中它们非常简单。其他一些人反对其原则。当然,这是有原因的,但总的来说,这只是一个设计选择。为什么我感兴趣的一门语言不通过设计掩盖他们:
- 人们可以在飞行中,Java的匿名类样式创建的子类(例如,创建一个基类的实例,但更换一些带有自己函数指针的虚拟函数,而不需要定义一个新类), 可以设计自己更快但语义上等同的版本,例如动态类型转换
- 可以使用现有机制在运行时给他们的类(允许RTTI)提供人类可读的名称,
- 一个可以存储附加的“多态”数据与对象,如虚拟非功能的构件,
- 学生可以更直接地了解继承,类型标识,等等
当然的内部工作,人们可以只留在C中,但我的意思是,语言实际上是面向对象的,默认情况下会为用户正确执行所有“魔术”,除非实际需要额外的灵活性。用户有责任处理由于玩得不好而造成的情况。
是否存在这样的语言(可能是模糊的)?如果不是,最接近的匹配是什么以及它们满足哪些条件?
你*的*熟悉安置新,是吗? – jaggedSpire
您可以手动在C++中执行斜体。 – nwp
@jaggedSpire当然,但只有去的方式的一部分。例如。它不会让你离开未初始化的对象。 –