一开始我对指针的理解很薄弱,但我很难找到类定义中需要它们的确切原因。
我知道指针是一种变量,指向另一个变量的内存地址。这就是我真正理解的起点和终点。
但是,我不可能在这个派生类的开头看到它们的用途:
class Circle : public Shape {
private: int* radius;
....
....
}
为什么 radius 是指针?这有什么用?
最佳答案
指针的用例基于以下事实:指针指向同一内存位置的两个对象可以通过该内存进行通信。
三个主要目的是:
- 沟通本身(参见下面的示例)
- 经济:如果您的函数需要一些
BigFatObject
作为参数,那么您声明此参数的类型为BigFatObject*
。这样您就可以将堆栈使用量从sizeof(BigFatObject)
(可能很大)减少到sizeof(void*)
(通常只有 4/8 字节) - 将大的无所不能的对象分解为更简单的对象的图形。在那种情况下,需要一些其他对象来完成其工作的对象将持有指向所需对象的指针
例如:
class SharedObject
{
public:
int getValue() { return value; }
void setValue(int value) { this->value = value; }
private:
int value;
};
class CommunicatesThroughSharedObject
{
public:
CommunicatesThroughSharedObject(SharedObject *shared)
{
this->shared = shared;
}
private:
SharedObject *shared;
};
SharedObject shared;
CommunicatesThroughSharedObject c1(&shared), c2(&shared);
现在你可以让 c1
和 c2
通过调用它们的 shared
变量的 getValue
和 setValue 进行通信
方法
关于c++ - 为什么要在类定义中使用指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433822/