作为指针的数据成员
data members as 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),而且我在徘徊,用指向堆上数据的指针替换数据成员会更好吗?
谢谢。
我会
说经验法则是"如果你不需要,不要通过使用指针来使你的生活复杂化"。
在C++中,有一些参考文献(以我的拙见)更容易使用和理解。关于类中的方法,通常需要通过引用传递对象,以避免破坏所需的对象;但就变量而言,我认为需要使用指针并不常见。:)
作为可能的答案,如果您在运行时知道对象的确切类型,请使用堆栈变量或引用。如果在运行时不知道对象的类型,请使用指针。同样的规则适用于函数的参数。谢谢。
相关文章:
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 使用指针访问数组中的对象数据成员
- 共享 C++ 的数据成员指针
- C++数据成员:值与指针
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 如何在C++中使用类对象访问指针数据成员
- 将指向数据成员的指针传递给 std::invoke 时有哪些用例和有用性?
- 通过指针算法访问结构数据成员
- 如何强制实施有关指针数据成员的常量正确性
- 类数据成员指针的非类型模板参数包无法使用 gcc 编译
- constexpr 偏移量,带有指向成员数据的指针
- 指向未由对象地址初始化的对象的指针如何将值分配给类的数据成员
- 将数据成员的指针传递给基类构造函数是否安全?
- 虚拟指针大小因类数据成员而异
- "new"不会将内存分配给作为类的数据成员的指针
- 关于Lambdas,转换以功能指针以及私人数据成员的可见性
- 向上转换指向数据成员及其多态行为的指针
- 指向数据成员转换的 Constexpr 指针
- 关于C++中指向数据成员的指针的一些混淆
- C 细分故障访问类数据成员,而无需明确使用指针