错误、漏洞、问题 - 页 2719

 
fxsaber:

构造函数只是因为没有它你就不能初始化一个常量字段。结构或等级--没有任何区别。最主要的是要有一个对象。

这取决于你。


 
Vict:

这取决于你。

我不认为常态领域与一般实践相悖。

 
更新和补充了 关于重载模板函数的调用优先级的错误信息
 
fxsaber:

我不认为const领域与一般实践有冲突。

没有)),我只是认为它应该在结构上是正确的。那么,为什么还要拄着拐杖呢?这很优雅,做一个数组,循环往复,做set()。如果逻辑上有错误(在某处重复调用),你会得到崩溃。

class A {
    int a;
public:
    A() : a(INT_MAX) {}
    void set(int aval) {if (a != INT_MAX) abort(); a = aval;}
    int get() {return a;}
};
 
Vict:

我认为这不值得把你的鼻子伸进别人的沼泽地。

 
Sergey Dzyublik:

我认为这不值得把你的鼻子伸进别人的沼泽地。

瘾君子?fxsaber 征求意见,我告诉他。

 
fxsaber:

在我看来,为创建后永远不会(也不应该)被改变的字段编写const是合乎逻辑的。

不,在非常罕见的情况下,他们会制作const字段。而且不适合简单的类型。

 
Vict:

瘾君子?fxsaber 征求意见,我回答。

保持简单,你就会接触到...

 
Koldun Zloy:

不,恒定字段是在非常罕见的情况下进行的。而且不适合简单的类型。

一个简单的例子。你需要一个有预设周期的MAU阵列。

它们中的每一个都是一种类型的对象。很明显,一个类型的物体是由它的时期唯一设定的。这就是为什么让它成为常态是合乎逻辑的。


其他语言只是做一个指针数组。在MQL中没有这种自由。

 
Koldun Zloy:

不,恒定字段是在非常罕见的情况下进行的。而且不适合简单的类型。

你知道MQL优化器和编译器是如何设置的吗?
你怎么能这么肯定简单类型的常量字段不会被用于此目的?