-2

假设我有下一节课,其中包括许多数据成员:

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

谢谢你。

4

2 回答 2

2

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

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

于 2013-11-13T16:06:56.547 回答
0

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

于 2013-11-13T16:08:45.100 回答