作为指针的数据成员

data members as pointers

本文关键字:数据成员 指针      更新时间:2023-10-16

假设我有下一个类,其中包括许多数据模因:

Class A
{
public:
  .
  .
  .
private:
  string a1;
  string a2;
  vector<string> vec1;
  .
  .
  .
  .
}

假设我有一个名为 foo() 的递归函数,其中包含许多 A 类型的局部变量:

void foo()
{
  A a_1;
  A a_2;
  A a_3;
  .
  .
  .
  A a_n;
}

正如您在类定义中看到的那样,今天,A 的数据成员是真实的对象,而不是指针。我知道所有这些数据成员都存储在堆栈上,堆栈的大小有限(在我的例子中为 512MB),而且我在徘徊,用指向堆上数据的指针替换数据成员会更好吗?

谢谢。

我会

说经验法则是"如果你不需要,不要通过使用指针来使你的生活复杂化"。

在C++中,有一些参考文献(以我的拙见)更容易使用和理解。关于类中的方法,通常需要通过引用传递对象,以避免破坏所需的对象;但就变量而言,我认为需要使用指针并不常见。:)

作为可能的答案,如果您在运行时知道对象的确切类型,请使用堆栈变量或引用。如果在运行时不知道对象的类型,请使用指针。同样的规则适用于函数的参数。谢谢。