【发布时间】:2022-02-04 00:03:11
【问题描述】:
这两种实现有什么不同
//SIZE is known before runtime
class A{
int* p1 = new int[SIZE];
}
class B{
int* p1;
B(){//Using constructor
p1 = new int[SIZE];
}
}
【问题讨论】:
-
只有在你创建另一个构造函数并忘记初始化 p1 时才会出错。
-
如果在运行前知道大小,最好使用数组或
std::array。通过动态分配类打开a whole can of worms。 -
并使用 std::vector 即使已知大小。您可以在大多数编译器的调试模式下获得免费的生命周期管理和边界检查
-
@user4581301
If size is known before runtime you're better off with an array or a std::array取决于已知大小。如果它很大,那么这样的成员就会有问题,因为创建类的自动变量很容易导致堆栈溢出。在这种情况下,动态数组更好。如果使用 RAII(例如std::vector),它不会打开一罐蠕虫。 -
这会教我忽略
vector以尽量保持评论简短。
标签: c++ performance dynamic