模板参数=void*的编译器错误 - 页 19 1...121314151617181920 新评论 Ilya Malev 2018.12.21 04:00 #181 pavlick_:自毁?- 这是新的 :)。 是的,自毁。我想你应该知道这是 "堆栈 "对象和动态对象之间的区别--它们不会问你什么时候删除自己,而是在退出源程序块时进行删除 :) pavlick_ 2018.12.21 04:04 #182 Ilya Malev: 是的,自我毁灭。我想你应该知道这是 "堆栈 "对象和动态对象之间的区别--它们不会问你什么时候删除自己,而是在退出源程序块时进行删除 :)你可能听说过复制/移动构造函数/操作器,对吗? obj o; { obj q; o = q; o = move(q); // С++ вариант, более эффективный } Ilya Malev 2018.12.21 04:06 #183 pavlick_:你可能听说过复制/移动构造函数/操作器,对吗? 因此,我们会注意那个关键时刻,并这样复制它,只要我们不太晚?:lol: 只是因为我们真的不喜欢OOP,还是有其他不可告人的原因? pavlick_ 2018.12.21 04:10 #184 Ilya Malev:因此,我们会注意那个关键时刻,并这样复制它,只要我们不太晚?:lol: 只是因为我们真的不喜欢OOP,还是有其他不可告人的原因?当然,还能有什么呢?作为一个合格的程序员,你也必须通过堆栈管理动态对象(RAII技术)。 { unique_ptr<Class> p(new Class); ... // ой, самоуничтожение :) } Ilya Malev 2018.12.21 04:11 #185 而且,地狱,我们将为它建立大量的包装器。因为多态性的 利基并不那么重要,但我们的拐杖却有一整个领域的应用,如果我们不使用OOP :哭。 Ilya Malev 2018.12.21 04:24 #186 pavlick_:当然,不然怎么会这样呢?作为一个体面的程序员,你也必须通过堆栈对象来管理动态对象(RAII技术)。 你是说收垃圾的人吗?)))),或者计算参考文献的数量。我最近一直在练习这些东西。但不幸的是,所有这些方法的性能在µl中都很差。 Ilya Malev 2018.12.21 04:27 #187 通过堆栈管理din.object意味着要为每个对象分配额外的24字节的内存(这就是这种 "堆栈指针 "+对象本身的引用的 "重量")。加上速度方面的时间成本一点也不小。总的来说,所有这些都是相当可悲的。但我们也不觉得有什么大的需要在里面。俗话说,恐惧有很多的眼睛。如果我们对空间站进行编程,那么你就不能不进行严格的控制。但就像现在这样,有了微调的阶级系统,没有它一切都好办。 pavlick_ 2018.12.21 05:03 #188 不,不是关于垃圾收集器,而是关于智能指针 - unique_ptr, shared_ptr (with reference counting), RAII很容易被搜索到。 一般来说,unique_ptr在内存方面没有额外的成本(包装器==指针大小),而且调用是过度优化的,但在μl中,一切都很悲哀,是的。但这里也不需要(聪明的指路人)。 Alexey Navoykov 2018.12.21 05:42 #189 pavlick_: 或者你可以采用这些模板,写一些类似的东西。 https://www.mql5.com/ru/forum/295485/page18#comment_9971363 按钮也是独立于细节的,没有所有的多态性和接口。多态性有它自己的利基,但它比他们说的要窄得多。 在这样一个简化的例子中,模板看起来当然更方便。事实上,你甚至不需要一个模板,因为你只有一个实例。 pavlick_ 2018.12.21 06:24 #190 Alexey Navoykov:这个简化的例子当然使模板看起来更方便。事实上,你甚至不需要一个模板,因为你只有一个实例。通过g 的按钮灯与虚拟性。 struct SwitchableDevice { virtual void switchOn() = 0; virtual void switchOff() = 0; }; struct Lamp : SwitchableDevice { void switchOn(){std::cout << "shine bright" << std::endl;} void switchOff(){std::cout << "i am not afraid of the dark" << std::endl;} }; struct Button { SwitchableDevice& dev; bool state = false; Button(SwitchableDevice& d) : dev(d) {} void buttonPress(){ if (state) { dev.switchOff(); } else { dev.switchOn(); } state = !state; } }; int main(){ Lamp lamp; Button button(lamp); button.buttonPress(); button.buttonPress(); } 老生常谈的例子。 1...121314151617181920 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
自毁?- 这是新的 :)。
是的,自我毁灭。我想你应该知道这是 "堆栈 "对象和动态对象之间的区别--它们不会问你什么时候删除自己,而是在退出源程序块时进行删除 :)
你可能听说过复制/移动构造函数/操作器,对吗?
obj o; { obj q; o = q; o = move(q); // С++ вариант, более эффективный }你可能听说过复制/移动构造函数/操作器,对吗?
因此,我们会注意那个关键时刻,并这样复制它,只要我们不太晚?:lol:
只是因为我们真的不喜欢OOP,还是有其他不可告人的原因?
因此,我们会注意那个关键时刻,并这样复制它,只要我们不太晚?:lol:
只是因为我们真的不喜欢OOP,还是有其他不可告人的原因?
当然,还能有什么呢?作为一个合格的程序员,你也必须通过堆栈管理动态对象(RAII技术)。
{ unique_ptr<Class> p(new Class); ... // ой, самоуничтожение :) }当然,不然怎么会这样呢?作为一个体面的程序员,你也必须通过堆栈对象来管理动态对象(RAII技术)。
你是说收垃圾的人吗?)))),或者计算参考文献的数量。我最近一直在练习这些东西。但不幸的是,所有这些方法的性能在µl中都很差。
不,不是关于垃圾收集器,而是关于智能指针 - unique_ptr, shared_ptr (with reference counting), RAII很容易被搜索到。 一般来说,unique_ptr在内存方面没有额外的成本(包装器==指针大小),而且调用是过度优化的,但在μl中,一切都很悲哀,是的。但这里也不需要(聪明的指路人)。
或者你可以采用这些模板,写一些类似的东西。
https://www.mql5.com/ru/forum/295485/page18#comment_9971363
按钮也是独立于细节的,没有所有的多态性和接口。多态性有它自己的利基,但它比他们说的要窄得多。
在这样一个简化的例子中,模板看起来当然更方便。事实上,你甚至不需要一个模板,因为你只有一个实例。
这个简化的例子当然使模板看起来更方便。事实上,你甚至不需要一个模板,因为你只有一个实例。
通过g 的按钮灯与虚拟性。
老生常谈的例子。