错误、漏洞、问题 - 页 2326

 
TheXpert:
现在没有概念了,一个对象和一个指向它的指针被混在一堆。

这允许将指针作为对象来处理,在某些情况下,这提供了一个更简单、更清晰的符号,而不需要 *

而这样的指针也可以作为引用使用

而现在,他们提议摧毁这一切,回到石器时代,为了不知道是什么的目的

 
A100:

而现在他们提议摧毁这一切,回到石器时代,谁知道是为了什么。

这是你的观点,我的想法正好相反。

 
TheXpert:

那是你的观点,我的想法正好相反。

你到底不喜欢什么?MQL中的指针实际上是一个引用?而MQL中的地址运算没有任何意义,因此也就没有使用!
 

A100:
А что конкретно Вас не устраивает? Что в MQL указатель это фактически ссылка?

实际上,这不是真的 )

而在MQL中,地址运算是没有意义的,因此不使用!?

智能指针也没有地址运算,但由于某种原因,它们被使用了
 
TheXpert:

其实不是的 )

智能指针也没有地址运算,但由于某种原因,它们被使用了

严格来说,不是的,但是在没有地址运算的情况下,MQL pointer/writer比C++指针更接近于(或者至少不会更远)C++的引用

如果是这样,必须相应地保留语法(没有*)。

 
Ilyas:

没有,没有什么严重的原因。

没有它的唯一理由是为了照顾不熟悉C++的用户的脆弱心灵。

 
A100:

严格地说,它不是,但在没有地址运算的情况下,指针/MQL指针比C++指针更接近(或者至少不会更远)于C++的引用

如果是这样,就应该相应地存储语法(没有*)。


 
A100:

为什么要把它变得如此复杂?这足以使.和->等同,可互换的记录

形象地讲。

如果你让它们可以互换,你根本不需要它们两个。

在C++中,这是有可能的。

class A
{

public:
   void f();
};

class PtrA
{
  A* mPtr;

public
   PtrA( A* a ) : mPtr( a ){}

   A* operator->()
   {
      return mPtr;
   }

   void f();
};

PtrA a( new A );

a.f();   //  Это две разные функции
a->f();  //
 

操作符->确实应该被添加到语言中,首先是为了与C++代码兼容,其次是为了允许重载(这对智能指针很有用)。

点是MQL中的一个通用运算符。

 

为什么MQL没有修复基类被隐含地投向派生类的错误? 甚至没有一个编译器警告!?

class A {  };

class B : public A { };

A a;

B* b= &a;  // Нет ошибки