数据成员作为指针

时间:2013-11-13 15:58:41

标签: c++ pointers

让我们说下一堂课包括许多数据成员:

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)并且我在徘徊,用指针替换数据成员会更好地指向堆上的数据吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

我会说经验法则是“如果你不需要”,不要使用指针来使你的生活复杂化。

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

答案 1 :(得分:0)

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