在不调用析构函数的情况下附加到队列

时间:2012-01-10 05:33:50

标签: 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 );
};

每当我尝试以这种方式追加到我的队列时aqueue.append(user(userid, password);它将附加到我的队列中,但之后会调用析构函数。队列是指向下一个单元格的基本通用链接列表。我的问题是:如何在没有每次调用析构函数的情况下将类添加到队列中?

2 个答案:

答案 0 :(得分:1)

将指针(例如原始指针,std::auto_ptrstd::unique_ptr)存储到您要存储的对象,而不是对象本身。

答案 1 :(得分:1)

看起来你正在堆栈中创建对象&amp;将它传递给队列以便追加。 并且当队列接受对象(不是指针或引用)时,它可以深度复制对象&amp;当原始对象的范围得到完成时,它将被删除(破坏)。

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