错误、漏洞、问题 - 页 2563 1...255625572558255925602561256225632564256525662567256825692570...3184 新评论 Andrey Barinov 2019.09.17 18:04 #25621 Igor Makanu: https://www.mql5.com/ru/docs/basis/oop/staticmembers ? Igor Makanu 2019.09.17 18:11 #25622 Andrey Barinov: ? 在这个例子中,它有一个静态修改器,如果你删除它,编译器会给出一个警告,因为它应该 静态可以通过上下文解析操作符从 你的代码的任何部分 访问...从 任何代码片断中都可以看到! (我不记得范围了,最近没有检查过,但很可能是全局的,就像在代码的最顶端描述的那样,也就是说,静态方法/字段在哪里被声明并不重要) Andrey Barinov 2019.09.17 18:15 #25623 Igor Makanu: 使用上下文解析语句,可以从 代码的任何部分 访问一个statik...从 代码的任何 部分! (我不记得范围了,最近没有检查过,但很可能是全局的,就像在代码的最顶端描述的那样,也就是说,静态方法/域在哪里声明并不重要) 多久以前变得如此:)? 所有相同的规则都适用于静态(私有、保护、公共),它们只是不需要创建对象。 这是一个明显的错误。 Igor Makanu 2019.09.17 18:39 #25624 Andrey Barinov: 这样的情况有多久了 :)? 我不知道,我可以确定的是,几个月前,@Ilyas admin 正在解释static的初始化程序,他提到在MQL-程序启动时,static方法和static字段与全局变量一起被初始化......请进一步搜索他的帖子 安德烈-巴里诺夫。 所有相同的规则都适用于静态(私有、保护、公共),它们只是不需要创建对象。 这是一个明显的错误。 我不准备争论,也不想争论,但帮助文本指出了静态方法的行为 MQL代码正在向C#程序的行为迈进,那里的情况也是类似的,如果程序员决定使用上下文解析操作符,这意味着他有意识地拒绝了编译器的帮助来识别类中违反数据完整性的行为,有一些经典的方法可以在没有上下文解析操作符的情况下获得方法和域。 UPD: 我决定一点一点地重写我的MQL库,我惊恐地注意到,我写的是我在流行的MQL代码中看到的方法和字段的名称与保留字的名称重合....imho,这也是在 "破坏 "依赖关系时避免编译器帮助的一个步骤....。马马虎虎 )))) TheXpert 2019.09.17 18:50 #25625 Igor Makanu: 如果程序员决定使用上下文解析操作符,这意味着他/她有意识地拒绝编译器的帮助来检测类中的数据完整性违规行为,有一些经典的方法和字段的获取不需要上下文解析操作符。 我认为你吸食了太多的OOP。 让它休息一下,然后带着清醒的头脑回来。 上下文解析语句定义了可见性,但对访问没有影响。 Igor Makanu 2019.09.17 19:10 #25626 TheXpert: 我想你已经吃了太多的OOP,休息一下,然后用新的头脑。"上下文解析语句定义了可见性,但对访问没有影响。 好吧,由我来决定抽什么烟,什么时候休息 )))) SZY:任何语言在访问内存内容时都有很多技巧。 我在评论中读到了那里的爱好,经常有关于Python和C++的争吵,再一次--有更人性化的方法来处理字段和方法,如果你决定它更快,那么你不应该指责你得到的东西--在所有的编译器中,你总是可以在你不应该的地方闯入)))。 Aliaksandr Hryshyn 2019.09.17 19:21 #25627 Igor Makanu: 我不知道,我可以肯定地说,几个月前,@Ilyas admin 正在解释静态初始化程序,并提到静态方法和静态字段在MQL-程序启动时与全局变量一起被初始化......请进一步搜索他的帖子 我不准备争论,也不想争论,但帮助文本代表了静态方法的行为 "私有"--只允许从一个类的方法中访问该类的变量和方法。" "只有 "这个词在哪里不清楚? 根据这个例子,OnStart不是A类的一个方法。 Igor Makanu 2019.09.17 19:28 #25628 Aliaksandr Hryshyn: "私有"--只允许从一个类的方法中访问该类的变量和方法。" "只有 "这个词在哪里不清楚? 根据这个例子,OnStart不是A类的一个方法。 我们不是在谈论修饰语private,而是修饰语static--进行测试,看看静态在MQL中的表现如何。 Andrey Barinov 2019.09.17 19:33 #25629 Igor Makanu: 我不知道,我可以肯定地说,几个月前,@Ilyas admin 正在解释静态初始化程序,并提到静态方法和静态字段在MQL-程序启动时与全局变量一起被初始化......请进一步搜索他的帖子 我不准备争论,但帮助文本指出了静态方法的行为 而且,我认为没有必要用论据来确认--MQL正朝着C#程序的行为方向发展,它有类似的情况,以及如果程序员决定使用上下文解析操作符,这意味着他有意识地拒绝了编译器的帮助,以识别类中违反数据完整性的行为,有经典的方法和字段可以在没有上下文解析操作符时获得 UPD: 我决定一点一点地重写我的MQL库,我惊恐地注意到,我写的是我在流行的MQL代码中看到的方法和字段的名称与保留字的名称重合....imho,这也是在 "破坏 "依赖关系时避免编译器帮助的一个步骤....。马马虎虎 ))))https://pikabu.ru/story/nevozmozhno_tak_nevozmozhno_2129852 Igor Makanu 2019.09.17 19:42 #25630 Andrey Barinov: https://pikabu.ru/story/nevozmozhno_tak_nevozmozhno_2129852 ? 这是一个奇怪的情况,班级以外的所有东西都与staichiqs一起工作了很长时间。而我只是在大惊小怪....。只是为了好玩,你可以自己复制代码。 int print(int value) { Print(value,":",__FUNCTION__); return(value); } class A { private: static int a1; protected: static int a2; public: static int a3; }; //+------------------------------------------------------------------+ static int A::a1 = print(1); static int A::a2 = print(2); static int A::a3 = print(3); //+------------------------------------------------------------------+ void OnStart() {} //+------------------------------------------------------------------+ 你看到一个对象实例吗?而且它存在于MQL中;) SZZ:而且它存在于帮助的层面......你对我有什么不满? https://www.mql5.com/ru/docs/basis/oop/staticmembers 不能静态地声明类成员将导致需要在全局程序层面声明这些数据。 这将切断数据和它的类之间的关系,也不符合基本的OOP范式,即在一个类中结合数据和方法来处理它。静态成员允许非特定于个别实例的类数据存在于类的范围内。 1...255625572558255925602561256225632564256525662567256825692570...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
https://www.mql5.com/ru/docs/basis/oop/staticmembers
?
?
在这个例子中,它有一个静态修改器,如果你删除它,编译器会给出一个警告,因为它应该
静态可以通过上下文解析操作符从 你的代码的任何部分 访问...从 任何代码片断中都可以看到! (我不记得范围了,最近没有检查过,但很可能是全局的,就像在代码的最顶端描述的那样,也就是说,静态方法/字段在哪里被声明并不重要)
使用上下文解析语句,可以从 代码的任何部分 访问一个statik...从 代码的任何 部分! (我不记得范围了,最近没有检查过,但很可能是全局的,就像在代码的最顶端描述的那样,也就是说,静态方法/域在哪里声明并不重要)
多久以前变得如此:)?
所有相同的规则都适用于静态(私有、保护、公共),它们只是不需要创建对象。
这是一个明显的错误。
这样的情况有多久了 :)?
我不知道,我可以确定的是,几个月前,@Ilyas admin 正在解释static的初始化程序,他提到在MQL-程序启动时,static方法和static字段与全局变量一起被初始化......请进一步搜索他的帖子
所有相同的规则都适用于静态(私有、保护、公共),它们只是不需要创建对象。
这是一个明显的错误。
我不准备争论,也不想争论,但帮助文本指出了静态方法的行为
MQL代码正在向C#程序的行为迈进,那里的情况也是类似的,如果程序员决定使用上下文解析操作符,这意味着他有意识地拒绝了编译器的帮助来识别类中违反数据完整性的行为,有一些经典的方法可以在没有上下文解析操作符的情况下获得方法和域。
UPD: 我决定一点一点地重写我的MQL库,我惊恐地注意到,我写的是我在流行的MQL代码中看到的方法和字段的名称与保留字的名称重合....imho,这也是在 "破坏 "依赖关系时避免编译器帮助的一个步骤....。马马虎虎 ))))
Igor Makanu:
如果程序员决定使用上下文解析操作符,这意味着他/她有意识地拒绝编译器的帮助来检测类中的数据完整性违规行为,有一些经典的方法和字段的获取不需要上下文解析操作符。
我认为你吸食了太多的OOP。 让它休息一下,然后带着清醒的头脑回来。 上下文解析语句定义了可见性,但对访问没有影响。
我想你已经吃了太多的OOP,休息一下,然后用新的头脑。"上下文解析语句定义了可见性,但对访问没有影响。
好吧,由我来决定抽什么烟,什么时候休息 ))))
SZY:任何语言在访问内存内容时都有很多技巧。 我在评论中读到了那里的爱好,经常有关于Python和C++的争吵,再一次--有更人性化的方法来处理字段和方法,如果你决定它更快,那么你不应该指责你得到的东西--在所有的编译器中,你总是可以在你不应该的地方闯入)))。
我不知道,我可以肯定地说,几个月前,@Ilyas admin 正在解释静态初始化程序,并提到静态方法和静态字段在MQL-程序启动时与全局变量一起被初始化......请进一步搜索他的帖子
我不准备争论,也不想争论,但帮助文本代表了静态方法的行为
"私有"--只允许从一个类的方法中访问该类的变量和方法。"
"只有 "这个词在哪里不清楚?
根据这个例子,OnStart不是A类的一个方法。
"私有"--只允许从一个类的方法中访问该类的变量和方法。"
"只有 "这个词在哪里不清楚?
根据这个例子,OnStart不是A类的一个方法。
我们不是在谈论修饰语private,而是修饰语static--进行测试,看看静态在MQL中的表现如何。
我不知道,我可以肯定地说,几个月前,@Ilyas admin 正在解释静态初始化程序,并提到静态方法和静态字段在MQL-程序启动时与全局变量一起被初始化......请进一步搜索他的帖子
我不准备争论,但帮助文本指出了静态方法的行为
而且,我认为没有必要用论据来确认--MQL正朝着C#程序的行为方向发展,它有类似的情况,以及如果程序员决定使用上下文解析操作符,这意味着他有意识地拒绝了编译器的帮助,以识别类中违反数据完整性的行为,有经典的方法和字段可以在没有上下文解析操作符时获得
UPD: 我决定一点一点地重写我的MQL库,我惊恐地注意到,我写的是我在流行的MQL代码中看到的方法和字段的名称与保留字的名称重合....imho,这也是在 "破坏 "依赖关系时避免编译器帮助的一个步骤....。马马虎虎 ))))
https://pikabu.ru/story/nevozmozhno_tak_nevozmozhno_2129852
?
这是一个奇怪的情况,班级以外的所有东西都与staichiqs一起工作了很长时间。而我只是在大惊小怪....。只是为了好玩,你可以自己复制代码。
你看到一个对象实例吗?而且它存在于MQL中;)
SZZ:而且它存在于帮助的层面......你对我有什么不满?
https://www.mql5.com/ru/docs/basis/oop/staticmembers
不能静态地声明类成员将导致需要在全局程序层面声明这些数据。 这将切断数据和它的类之间的关系,也不符合基本的OOP范式,即在一个类中结合数据和方法来处理它。静态成员允许非特定于个别实例的类数据存在于类的范围内。