【发布时间】:2012-08-28 17:28:53
【问题描述】:
指针如何与面向对象编程的概念一起工作?
据我了解(请注意,我被归类为 ID-10T),OOP 的主要原则是包含在类中并保持管理责任(内存/实现/等);但是当一个对象的方法返回一个指针时,我们似乎正在“弹出”这个对象。现在,有人可能需要担心:
- 他们是否应该删除指针的关联对象?
- 但是如果类仍然需要对象呢?
- 他们可以更改对象吗?如果是这样,怎么做? (我知道
const可能会解决这个问题) - 等等……
对象的用户现在似乎需要更多地了解类的工作原理以及类对用户的期望。感觉就像是“猫从袋子里出来”的场景,似乎是在给 OOP 打耳光。
注意:我注意到这是一个独立于语言的问题;但是,在 C++ 环境中工作时,系统提示我提问。
【问题讨论】:
-
对于 C++11,原始指针应该仅用于表示无所有权。
-
我会研究“const vs nonconst”、“pointer vs reference”、“lvalue vs rvalue”和
std::unique_ptr、std::shared_ptr和std::weak_ptr。人们抱怨 C++ 中复杂的内存管理问题,这些问题在 Java 和 C# 等其他语言中被掩盖了 - 但是有一个好处:性能。
标签: c++ oop pointers responsibility