Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 附加到队列而不调用析构函数_C++_Queue_Linked List - Fatal编程技术网

C++ 附加到队列而不调用析构函数

C++ 附加到队列而不调用析构函数,c++,queue,linked-list,C++,Queue,Linked List,我有这门课: class user { private: string userid; string password; public: user(){}; user(string a, string b){userid = a; password = b;} ~user(){cout<<"Trace";}; void print ( ostream& out ); }; 类用户 { 私人: 字符串用户标识; 字符串密码

我有这门课:

class user
{
private:
    string userid;
    string password;
public:
    user(){};
    user(string a, string b){userid = a; password = b;}
    ~user(){cout<<"Trace";};
    void    print ( ostream& out );
};
类用户
{
私人:
字符串用户标识;
字符串密码;
公众:
user(){};
用户(字符串a,字符串b){userid=a;password=b;}

~user(){cout将指针(例如原始指针,
std::auto_ptr
std::unique_ptr
)存储到要存储的对象,而不是对象本身。

看起来您正在堆栈中创建对象并将其传递到队列进行追加。 当队列接受对象(不是指针或引用)时,它可能会深度复制对象&当原始对象的作用域完成时,它将被删除(销毁)


使用堆上的新运算符创建对象,然后使用引用或指针传递对象。

假设您的队列的工作方式类似于
std::queue
,则不能。您将对象复制到队列中,原始对象将被销毁。这似乎与您处理队列时所采用的方法相同。@BillyONeal我可以用指针解决这个问题吗?@Joe:是的;但是额外的内存分配将花费远不止几个析构函数调用。(老实说,在大多数情况下,链表都是一种可怕的数据结构;最好使用类似std::deque或循环缓冲区的方式)调用析构函数有什么问题?队列是您自己的类还是STL?