方法声明后的const修饰符意味着什么? - 页 3

[删除]  
故意使用这种结构也是很常见的。
const TYPE1 Method( const TYPE2 Input ) const;
而如果我不只是改变对象的内部数据,而且也不访问它,我就立即把方法写成静态。对我来说,使用常量和静态大大增加了我自己代码的可读性/理解性。而且它经常让我在实施的早期阶段就能发现自己架构中的错误或缺陷。

我写的一切只为自己。而且似乎我不会改变一些反正不应该改变的数据。但是,保护自己不受自己的愚蠢行为影响的愿望使我把OOP架构铆在一起,只有那些必须可以访问的东西才可以改变。其余的则没有。而在这里,const + 继承类型有很大的帮助。我推荐它。
 
Dmitry Fedoseev:

也许这是创作者给普通用户的一些部分。像EA中的开始功能和Bid和Ask变量。当你自己做所有的事情时,就没有必要为各种约束而烦恼。

不幸的是,为了兼容,我们不得不拖动所有这些压舱物。另一方面,小的C和C++代码可以非常迅速地移植到MQL中(这一点已经检查过多次)。
 

我注意到一个有趣的趋势--在绝大多数情况下,那些对它一无所知的人都在谈论优点的可怕性。大部分是锐利的人,这很典型。

是的,当然,当你需要制作像棍子一样直的东西时,夏普更好,更方便)。

 
zaskok3:
当我有意使用这种结构时,这并不是一个不常见的情况。
如果我不改变内部对象的数据或访问它,我就把这个方法指定为静态。对我来说,使用常量和静态大大增加了我自己代码的可读性/理解性。而且,它往往能让你在实施的早期阶段就发现自己架构中的错误或缺陷。
...

哦,伙计们。请怜悯MetaQuotes吧。程序员的主要戒律之一:永远不要使用静态。第二条戒律:如果你想使用静态的,见第一点:)

如果一个线程改变了静态数据,而另一个线程则读取了这些数据,这样的多线程编程的奇迹出现了,人们可以像做恶梦一样回忆起这些静态数据。

但对MQL中的用户来说是好事:没有多线程,因此,没有方法会在用户线程完成阅读之前改变静态数据。

 
Vasiliy Sokolov:

程序员的第一条戒律之一:永远不要使用静态。第二条戒律:如果你想使用静态的,见第一点:)

如果一个线程改变了静态数据,而另一个线程则读取了这些数据,这样的多线程编程的奇迹出现了,人们可以像做恶梦一样回忆起这些静态数据。

我再次确信,讨论是不会成功的 )
 
Комбинатор:

我注意到一个有趣的趋势--在绝大多数情况下,那些对它一无所知的人都在谈论优点的可怕性。大部分是锐利的人,这很典型。

是的,当然,当你需要制作像棍子一样直的东西时,夏普更好、更方便)。

古典马萨B的优点:"你不喜欢猫吗?你只是不知道如何烹饪它们。

不,我不否认,C++和其他语言一样,可以根据开发标准进行调整。但是,在你达到这些标准之前,你可能会被这样的耙子杀死,你要么成为一个真正优秀的C++程序员,要么放弃,去1C做ERP-票。

 
Vasiliy Sokolov:

经典的B级人物化妆舞会:"你不喜欢猫?你只是不知道如何烹饪它们。

这就是它的方式)。

我并不反对夏普,我正在用它写机器人,它很方便,很快速。

我只是不喜欢人们对不值得的东西泼脏水,而且是没有人一定要用的东西。

这适用于一般的缺点和优点。

 
Комбинатор:

这就是它的方式)。

我并不反对夏普,我现在正在用它写机器人,它很方便,很快速。

我只是不喜欢人们对不值得的东西泼脏水,而且是没有人一定要用的东西。

这适用于一般的const和prof。

好吧,世界。只是关于C++的讨论总是陷入一片喧嚣之中。

Z.U. 如果有人能向我解释const的问题是什么,我会很感激。我真的不明白。

[删除]  
Vasiliy Sokolov:

阿列克谢写了这个例子。一个常量方法不能改变它的类成员。

void bar(X& obj) const 
    {
        obj._x = 42; // OK! obj передается по ссылке и не имеет модификатора const
        _x = 42; // ERROR!
    }

也许我错过了什么,但...这里。Alexey写道,常量方法 bar改变其类obj的对象。问题是什么?

是的,obj是通过引用传递的,但这个方法还没有成为常量......

 
Alexey Kozitsyn:

也许我错过了什么,但...这里。Alexey写道,常量方法 bar改变其类obj的对象。问题是什么?

是的,obj是通过引用传递的,但方法仍然保持不变......。

这不是他的,而是一个完全不相干的同类型的人。