让我们说下一堂课包括许多数据成员:
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)并且我在徘徊,用指针替换数据成员会更好地指向堆上的数据吗?
谢谢。
答案 0 :(得分:2)
我会说经验法则是“如果你不需要”,不要使用指针来使你的生活复杂化。
在C ++中,有引用,(以我的拙见)更容易使用和理解。关于类中的方法,通常需要通过引用传递对象,以避免破坏您需要的对象;但就变量而言,我不认为你需要使用指针是很常见的。 :)
答案 1 :(得分:0)
作为一个可能的答案,如果您在运行时知道对象的确切类型,请使用堆栈变量或引用。如果在运行时不知道对象的类型,请使用指针。同样的规则适用于函数的参数。谢谢。