老实说,我需要帮助来理解这一点。我是一名CS学生,在这些主题上我处于巨大的心理障碍,因为我无法在脑海中忘记为什么这很重要/为什么我们花这么多钱在这一点上。
就指针而言,当您可以通过引用传递所有内容时,为什么要指向对象或变量地址?有没有理由我们不能通过引用而不是使用指针有效地传递这些东西?
另外,为什么删除指针或专门删除堆上的内容不会在C++中自动完成?为什么不像其他所有内容一样删除呢?为什么它不像其他一切一样集成到C++中?
通过这些练习的重点不是学习如何制作链表本身,而是学习如何根据设计解决问题和实现代码。不要忘记,根据定义,你在课堂上所做的任何事情几乎都是垃圾,你不会在应用程序中推出这些代码,这只是一个学习练习。您创建这些程序是为了理解和实践,而不是为了创建解决方案。
你为学习和探索而编写的代码与你为实际解决问题而编写的代码完全不同。当试图解决问题时,请专注于解决方案,尽量避免仅仅为了玩乐而尝试新事物。在学习时,尽量避免太快地找到解决方案,而是探索其他方法并权衡其优缺点。
至于C++为什么采取这种方法,每种语言都有一个哲学来决定它的设计。C++这意味着您100%负责内存管理,您可以完全控制。虽然这给了你令人难以置信的自由度,但这也意味着这是一项巨大的责任。
如果你想要垃圾回收,你可以得到它,但你必须问,你必须使用标准库容器或指针包装器之类的东西。
许多现代C++都围绕着完全避免内存管理,通过专注于使对象复制成本低的设计,尽可能通过引用传入内容,以及利用标准库提供的工具使手动内存管理在很大程度上无关紧要。new
是你出于绝望而做的事情,而不是设计使然。
为了获得更多见解,您可能需要投资一些专注于战略性地应用C++的书籍。