简化数据处理,掌握Excel去除空格的高效技巧
586
2022-05-29
在 C 和 C++ 编程中,指针非常强大。
正如我们在C 指针示例文章中所解释的,指针是保存另一个变量地址的变量,以便我们可以对该变量进行各种操作。
有时程序员无法想象不使用指针编写代码,无论是简单的二叉搜索树程序,还是复杂的企业应用程序。
但是,指针很难管理和掌握,如果处理不当,它们会导致许多问题。
例如,如果使用不当,可能会导致核心转储、悬空指针、空指针异常、内存泄漏等。
考虑以下代码片段。当我们在 Study() 方法中遇到异常时会发生什么?
Geek* geek=new Geek(); Geek->Study(); delete geek; // If study method raises an exception, who would do the above memory clean-up?
上述问题的解决方案是智能指针。
智能指针会自动处理许多这些问题。它们基本上是一个行为类似于指针的对象,即包装一个裸指针但提供额外的功能。所以我们应该使用这些来代替裸指针。
现在,让我们了解智能指针如何工作的基础知识。请注意,这只是用于创建智能指针的各种方法之一。
基本思想是为裸指针创建一个包装器,并重载一些将使用的运算符, * , -> 自动清理部分将由类的析构函数处理。
#include
在这段代码中,我们不需要在使用动态分配的变量后释放内存。
这显示了实现背后的基本思想。您可以使用模板库轻松地使其通用。
另一个想法是基于共享指针中使用的引用计数,它用于共享对象的所有权。
每有一个新的指针指向这个对象,引用对象就加一,当指针释放对象的所有权时,当最后一个指向它的指针释放所有权时,对象自动销毁。
代码示例:
#include
上面的代码展示了如何使用引用计数来实现智能指针的基本思想。
您可以修改上面的代码使其通用并编写您自己的智能指针并使用它。
C 语言 C++ 数据结构 汇编语言
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。