gpt4 book ai didi

c++ - 指针和面向对象编程

转载 作者:搜寻专家 更新时间:2023-10-31 00:17:56 25 4
gpt4 key购买 nike

指针如何与面向对象编程的概念一起工作?

据我了解(请注意,我被归类为 ID-10T),OOP 的主要原则是包含并保持类中包含的管理责任(内存/实现/等);但是当一个对象的方法返回一个指针时,我们似乎在“弹出”这个对象。现在,有人可能需要担心:

  1. 他们应该删除指针的关联对象吗?
  2. 但是如果类仍然需要该对象怎么办?
  3. 他们能改变对象吗?如果是这样,如何? (我知道 const 可能会解决这个问题)
  4. 等等...

看来对象的用户现在需要很多了解类如何工作以及类对用户的期望。这感觉就像一个“猫的 secret ”场景,似乎是对 OOP 的一记耳光。

注意:我注意到这是一个与语言无关的问题;然而,当我在 C++ 环境中工作时,系统提示我提出这个问题。

最佳答案

您描述的是所有权问题。这些是正交的(即独立的,你可以没有另一个,甚至两个)面向对象。如果您不使用 OOP 并使用指向 POD 结构的指针,您会遇到同样的问题。如果你使用 OOP 但以某种方式解决它,你就没有问题。您可以(尝试)使用更多 OOP 或其他方式解决它。

它们也与指针的使用正交(除非你选择并扩展指针的定义)。例如,如果两个不同的位置将索引保存到数组中并改变、调整大小并最终删除数组,则会出现相同的问题。

在 C++ 中,通常的解决方案是选择正确的智能指针类型(例如,当您希望共享对象时返回共享指针,或表示独占所有权的唯一指针),以及大量文档。实际上,后者是任何语言的关键成分。

您可以做的一件与 OOP 相关的事情是封装(当然,您可以在没有 OOP 的情况下进行封装)。例如,根本不要公开对象,只公开在幕后查询对象的方法。或者不公开原始指针,只公开智能指针。

关于c++ - 指针和面向对象编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164459/

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