【问题标题】:What happens to pointer that belongs to object whos copy was pushed to vector?属于将其副本推送到向量的对象的指针会发生什么?
【发布时间】:2017-07-11 08:50:04
【问题描述】:

我正在使用 Qt/C++。

所以我有一个向量:

QVector<Room> rooms; //does everything like normal vector from what I've seen(I hope)

我的房间类看起来像这样:

class Room{
  Textbox *t;
  //other stuff
}

添加房间时,vector 会复制通过引用传递的房间并将副本推入:

void Floor::AddRoom(Room &_room, QWidget *_window)
{
  rooms.push_back(_room);    
}

我的问题是属于_room 的文本框指针会发生什么,因为它在复制之前指向某个东西,如果它被制作了?我的新推送房间是否会使其 *t 指向与通过引用传递的 _room 相同的地址/对象,还是会变为 nullptr?

我阅读了文档,但找不到任何关于将对象的副本推送到向量时指针会发生什么的信息。 提前致谢。

【问题讨论】:

  • 恭喜,您刚刚遇到一个基本问题是软件设计:数据的所有权。谷歌“C++ 智能指针”。
  • 这是微不足道 用调试器回答,或者就此而言,将入站_room 参数的指针和向量对象指针的背面都打印到标准输出.

标签: c++ qt pointers vector copy


【解决方案1】:

是的,如果您不提供自己的复制构造函数,它将指向与最初相同的对象,因为复制的是指针的值,而不是指针指向的对象。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2022-12-04
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2021-09-20
    • 2014-01-01
    • 2015-05-15
    相关资源
    最近更新 更多