gpt4 book ai didi

c++ - 在 C++ 中实现接口(interface)功能

转载 作者:太空宇宙 更新时间:2023-11-04 15:54:55 27 4
gpt4 key购买 nike

我使用 OOP 的一个重要原因是创建易于重用的代码。为此,Java 风格的接口(interface)是完美的。然而,在处理 C++ 时,我真的无法实现任何类型的功能,如接口(interface)......至少不容易。

我知道纯虚拟基类,但真正让我恼火的是它们迫使我使用指针编写非常笨拙的代码。例如。 map<int, Node*> nodes; (其中 Node 是虚拟基类)。

这有时没问题,但有时指向基类的指针并不是一个可能的解决方案。例如。如果你想返回一个打包为接口(interface)的对象,你必须返回一个指向该对象的基类指针。但是该对象在堆栈上,并且在返回指针后不会在那里。当然,您可以开始广泛使用堆来避免这种情况,但这会增加比应有的更多工作(避免内存泄漏)。

有什么方法可以在 C++ 中实现类似接口(interface)的功能,而不必笨拙地处理指针和堆? (老实说,对于所有的麻烦和尴尬,我宁愿坚持使用 C。)

最佳答案

您可以使用 boost::shared_ptr 来避免原始指针。附带说明一下,您在 Java 语法中看不到指针的原因与 C++ 实现接口(interface)的方式和 Java 实现接口(interface)的方式无关,而是因为 Java 中的所有对象都是隐式指针(* 是隐藏的)。

关于c++ - 在 C++ 中实现接口(interface)功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1135018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com