我從來沒有寫過拷貝構造函數,所以爲了避免痛苦,我想知道我編碼是否合法。它編譯,但我不確定它作爲一個拷貝構造函數應該。C++在複製構造函數中使用const?
而且我要在拷貝構造函數使用const或我可以簡單地將其刪除。 (我不喜歡const的是,如果我使用一些非const函數,編譯器會哭)。
//EditNode.h
class EditNode
{
explicit EditNode(QString elementName);
EditNode(const EditNode &src);
}
//EditNodeContainer.h
class EditNodeContainer : public EditNode
{
explicit EditNodeContainer(QString elementName);
EditNodeContainer(const EditNodeContainer &src);
}
//EditNodeContainer.cpp
EditNodeContainer::EditNodeContainer(QString elementName):EditNode(elementName)
{
}
//This seems to compile but not sure if it works
EditNodeContainer::EditNodeContainer(const EditNodeContainer &src):EditNode(src)
{
}
//the idea whould be to do something like this
EditNodeContainer *container1 = new EditNodeContainer("c1");
EditNodeContainer *copyContainer = new EditNodeContainer(container1);
你的拷貝構造函數不會做任何事情,編譯器生成一個沒有做。 – 2012-03-23 23:24:18
是否有某些原因需要編寫自定義副本構造函數?在很多情況下,默認的應該沒問題。 – Philipp 2012-03-23 23:25:21
即當你要複製的數據從一個成員指出,而不是指針本身 – kappa 2012-03-23 23:27:27