【发布时间】:2020-03-05 09:00:59
【问题描述】:
我听说 C++ 中不推荐使用指针,但我不明白为什么。
我的问题是我想创建一个类对象向量来管理我的类。
vector<MyClass> vectorOfClass;
当然,为了更好的性能,我应该使用类对象指针的向量?
vector<MyClass *> vectorOfClass;
或者是否可以创建类对象的引用向量?
vector<MyClass &> vectorOfClass;
所以我的问题是:
- 这些方式有什么区别?
- 在创建类对象向量方面最优化的是什么?
【问题讨论】:
-
I heard pointers are not recommended in C++到底在哪里? -
@MutableSideEffect 通常最好避免使用指针,如果它们对于当前用例来说是不必要的。许多 java 或 C# 开发人员将使用 C++ 并开始在任何地方使用指针,只是为了能够在类型上使用
new。 -
std::vector<MyClass>应该是默认选择。 -
“当然,为了获得更好的性能,我应该使用类对象指针的向量?”自然?指针有它们的位置,但 C++ 与 C 不同,它提供了像
vector这样很少受益的东西。在内部,它们使用指针来定位存储在堆上的对象,并使用 C 中的指针手动执行您必须执行的操作。 -
当然,为了获得更好的性能,我应该使用类对象指针的向量? --
std::vector<MyClass>保证所有这些MyClass实例都是在连续内存中(即更有可能在缓存中)。std::vector<MyClass*>并非如此。
标签: c++ class pointers memory vector