有关于复制构造函数的类成员复制问题
class Message
{
public:
Message(const string &str = " "):contents (str){}
Message(const Message);
Message& operator= (const Message&);
~Message();
private:
string contents;
set<Folder*> floders;
void put_Msg_in_Folders(const set<Folder*>&);
void remove_Msg_form_Folders();
};
Message::Message(const Message &m):contents(m.contents), folders(m.floders)
{
put_Msg_in_Folders(folders);//为什么还要一个一个复制set容器的元素,不是已经folders(m.floders)吗?
//如果Message中有个数组成员,编译器可以自动一个个复制每个元素,为什么
//这里set不行?如果换成set<Folder> floders还需要人工复制嘛?
}
[解决办法]
set重载了operator=和有复制构造函数set(const set&)吧?
不需要put_Msg_in_Folders了吧?.
编译器可以按位复制元素.
但是,如果有指针,那么只能复制指针的值,而不是指针指向的内容.
[解决办法]
Message(const Message);
這個貌似會引起無限遞歸吧