打字问题 - 页 5

 
Ilya Malev:
P.S., 啊,也就是说,你想把一个二进制运算符重载为单进制运算符(2-binary为1-binary),那么是的,当然不是一个日期。唯一的例外是[]。

是的,在MQL中,硬性规定了什么和如何重载,在C++中,重载什么并不重要,你将以同样的方式调用它--如果你将^重载为单数,你将在将来使用它作为单数。

 
Igor Makanu:

是的,在MQL中,严格规定了重载的内容和方式,在C++中,重载的内容并不重要,你可以用同样的方式调用它--你把^重载为单数,你将来就会把它作为单数使用。

是的,看来mql还有很多限制,所以还有改进的余地 :)

我还希望能将二进制操作重载为单进制操作(反之亦然)。

因为在任何情况下,当重载时,它们的原始含义往往会丢失,分别是使用的逻辑不再与这个含义相关。允许这样做是符合逻辑的。

 
Ilya Malev:

是的,看起来mql中仍有很多限制,有改进的余地 :)

有很多,这些限制出现,然后消失,然后五...看来,开发人员有时会改变开发环境))))。

举个例子,在帮助中,在重载操作(operator)一节中,现在没有编译与矩阵有关的工作实例,而我知道它们曾经工作过,现在有一个检查参与重载操作的参数的类型,即如果我有

int operator*(const int)那么int operator*(int)就不会被编译,在帮助中也有这样的例子,它停止了编译。

 
Ilya Malev:

亲爱的程序员,我为一个问题困惑了很久。有没有可能以某种方式设计并使函数的返回值隐式化?这样,类方法 将返回一个不同类型的值,并带有调用方法的外部身份。

请允许我问:你需要它的目的是什么?没有它你就不能建造一艘星际飞船吗?

 
Vasiliy Sokolov:

我可以问一下你需要它做什么吗?没有它你就不能建造一艘星际飞船吗?

请允许我问:你对它的兴趣是什么?

 

顺便说一下,这甚至不是一个返回类型的重载。

总的来说,这个想法离可行还很远。

 
Vasiliy Sokolov:

我可以问一下你需要它做什么吗?没有它你就不能建造一艘星际飞船吗?

起初我也很挑剔,但后来我想我也可以为自己所用。

class Point {
public:
   double price;
   long time;
   operator double()const {return price;}
   operator long()const {return time;}
};

class Array {
   Point p[3] = {{0,1}, {2,3}, {4,5}};
public:
   const Point &operator[](unsigned i) {return p[i];}
};

void start()
{
   Array a;
   double d = a[2];  // d == 4
   long t = a[2];    // t == 5
}
 
Dmitry Fedoseev:

顺便说一下,这甚至不是一个返回类型的重载。

明显的船长来了?

 
Ilya Malev:

明显的船长来了?

如果你忘记了,就用Shift+Alt。

 
C#有显性和隐性转换。这似乎是方便的糖,但非常隐蔽,IntelliSense会沉默不语。一个月后,你会忘记什么类可以转换为什么。一般来说是一个OOP游戏,但很好。