c++分配* new Object()以引用

标签 c++ reference allocation

我有一个关于在 C++ 中分配的问题。 我有这段代码:

vector<unsigned char> &v = *new vector<unsigned char>();

现在的问题是,取消引用对象并将其直接分配给引用通常是个好主意吗?

在我看来,这使得对象的使用变得更加容易,因为现在您可以:

v.push_back('a');
v[0];

代替

v->push_back('a');
(*v)[0];

终于可以了

delete &v;

释放我的堆

仅仅因为(相同)好的答案的数量: 我知道我可以只使用堆栈变量 但就我而言,我需要它在堆上! 但是使用堆或堆栈变量是另一个问题。

所以我让这个例子保持简单,尤其是根本没有问我是否应该分配变量。

最佳答案

Is it generally a good idea to dereference the object and assigning it directly to a reference?

不,一点也不。

如果不需要动态分配,因为对象只需要持续到当前作用域那么长,那么改为创建一个自动变量:

vector<unsigned char> v;

如果您确实需要一个动态对象,那么尝试伪装它是忘记它需要删除的好方法。最好的办法是使用智能指针,这样你根本不需要记住删除它;如果做不到这一点,请使用指针。

关于c++分配* new Object()以引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647800/

相关文章:

c++ - 返回对象的方法的异常替代方法

c++ - 获取结构C++中元素的索引

c++ - 如何在 C 编程中做到像 "with"(Pascal)?

c# - 如何避免对 UserControl 的引用进行硬编码?

c++ - 动态分配的成员变量。重点是什么?

c++ - 检查堆栈 C++ 中的最小值

java - 对象引用设置为 null 后会发生什么

c++ - 如何判断Im是否通过引用正确使用?

c - 将用户生成的节点添加到 C 中链表的末尾

c++ - 推送到 std::deque 时如何检测动态内存分配失败?