MQL5 编译器不区分类和它的指针 - 页 2 123456789...13 新评论 Dmitry Fedoseev 2019.01.10 06:08 #11 SemenTalonov:这就是我所期待的副本...默认的复制构造函数不是一个错误。 但是Dmitry 说,一个新的对象将被分配到内存中,并且将返回一个POINTER_AUTOMATIC 类型的指针。 每个人都以他自己的方式理解MQL的怪癖)是的,事实证明没有圣诞父亲。 我还没有写到记忆中的任何对象。 好吧,曾经有关于如何区分引用和指针的争议。但现在看来,我们无法区分对象和指针。 Georgiy Merts 2019.01.10 06:09 #12 Dmitry Fedoseev:一个物体的副本从何而来?指针的拷贝,是的,但指向同一个对象。我们有一个对象的数组。在这个数组的第一个元素上调用一个赋值运算符,这个运算符被传递给单独创建的对象(尽管,这个运算符是未声明的)。你认为之后数组的第一个元素应该是什么?在我看来,这个对象应该保留。 Georgiy Merts 2019.01.10 06:11 #13 SemenTalonov:我的观点是,一个明确声明的复制构造函数在这个测试中不会改变任何东西。 你怎么能看不到明显的... 一个 对象数组项 包含一个指针,指针数组项中有一个对象......这真的正常吗? 在第一种情况下,一个对象指针进入数组在第二种情况下,复制构造函数应该起作用,这些操作怎么可能是等同的?不是复制构造函数,而是赋值运算符,但这是小事。 它是应该进入对象数组的一个元素的对象。 在第一种情况下--你正好有一个对象阵列,什么样的 "指针"? Dmitry Fedoseev 2019.01.10 06:12 #14 Georgiy Merts:我们有一个对象的数组。赋值运算符 在这个数组的第一个元素处被调用,单独创建的对象被传递给它。你认为这个数组之后的第一项应该是什么?在我看来,这个对象应该保留。 А...那里一点都不好)))。自动指针的数组,并且在其中还塞入了动态创建的对象。然后有3个对象,其中两个将被自动删除,一个将泄漏。如果它被编译了。 Dmitry Fedoseev 2019.01.10 06:15 #15 它应该是这样的。 A* m_A[2]; 和这样。 m_A[0] =GetPointer(a); Dmitry Fedoseev 2019.01.10 06:16 #16 最后,它是这样的。 for(int i=0;i<2;i++)if(CheckPointer(m_A[i])==POINTER_DINAMIC)delete(m_A[i]); SemenTalonov 2019.01.10 06:19 #17 Dmitry Fedoseev:А...那里一点都不好)))。一个自动指针的数组,他们还塞进了一个动态创建的对象。最后!))。 格奥尔基-梅尔茨。这是必须放在 对象数组元素中的对象。 在第一种情况下--你正好有一个对象的数组,什么 "指针"? 这就是我的观点 !为什么它能工作? m_A[1] = new A(); Dmitry Fedoseev 2019.01.10 06:21 #18 SemenTalonov:最后!))。 这就是我的观点!为什么它能工作? 如果A被宣布为如此。 A* m_A[2]; 那么就可以了。 如果是这样的话。 A m_A[2]; 它不应该被编译。要么是编译器有问题,要么是编译器不需要为大家考虑。 Dmitry Fedoseev 2019.01.10 06:27 #19 这可能不是一个错误,但分配简单的对象应该是有效的,所以你必须注意删除你用new创建的对象。 SemenTalonov 2019.01.10 06:28 #20 Dmitry Fedoseev:那么它就不应该被编译。要么是编译器有问题,要么是编译器不需要为大家考虑。中奖了! SemenTalonov2019.01.10 07:36#3POINTER_AUTOMATIC 类型的指针保存为一个POINTER_DYNAMIC 类型 的指针,反之亦然。 123456789...13 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这就是我所期待的副本...默认的复制构造函数不是一个错误。
但是Dmitry 说,一个新的对象将被分配到内存中,并且将返回一个POINTER_AUTOMATIC 类型的指针。
每个人都以他自己的方式理解MQL的怪癖)
是的,事实证明没有圣诞父亲。
我还没有写到记忆中的任何对象。
好吧,曾经有关于如何区分引用和指针的争议。但现在看来,我们无法区分对象和指针。
一个物体的副本从何而来?指针的拷贝,是的,但指向同一个对象。
我们有一个对象的数组。在这个数组的第一个元素上调用一个赋值运算符,这个运算符被传递给单独创建的对象(尽管,这个运算符是未声明的)。你认为之后数组的第一个元素应该是什么?在我看来,这个对象应该保留。
我的观点是,一个明确声明的复制构造函数在这个测试中不会改变任何东西。
你怎么能看不到明显的...
一个 对象数组项 包含一个指针,指针数组项中有一个对象......这真的正常吗?
在第一种情况下,一个对象指针进入数组在第二种情况下,复制构造函数应该起作用,这些操作怎么可能是等同的?
不是复制构造函数,而是赋值运算符,但这是小事。
它是应该进入对象数组的一个元素的对象。
在第一种情况下--你正好有一个对象阵列,什么样的 "指针"?
我们有一个对象的数组。赋值运算符 在这个数组的第一个元素处被调用,单独创建的对象被传递给它。你认为这个数组之后的第一项应该是什么?在我看来,这个对象应该保留。
А...那里一点都不好)))。自动指针的数组,并且在其中还塞入了动态创建的对象。然后有3个对象,其中两个将被自动删除,一个将泄漏。如果它被编译了。
它应该是这样的。
A* m_A[2];
和这样。
m_A[0] =GetPointer(a);
最后,它是这样的。
А...那里一点都不好)))。一个自动指针的数组,他们还塞进了一个动态创建的对象。
最后!))。
这是必须放在 对象数组元素中的对象。
在第一种情况下--你正好有一个对象的数组,什么 "指针"?
这就是我的观点 !为什么它能工作?
最后!))。
这就是我的观点!为什么它能工作?
如果A被宣布为如此。
A* m_A[2];
那么就可以了。
如果是这样的话。
A m_A[2];
它不应该被编译。要么是编译器有问题,要么是编译器不需要为大家考虑。
那么它就不应该被编译。要么是编译器有问题,要么是编译器不需要为大家考虑。
中奖了!