我是新來複制構造函數的概念。我有一個基本問題。 希望實施類似深層應對C++ - 如果給出指向該類的類的副本,請給出類
orig *f1(orig*o)
{
// Returns a copy of *0 and should deep copy all the values of the parent
// pointer.Planning to implement a copy constructor to achieve the same.
// Can anyone provide a prototype or some idea on the same?
}
class dummyclass
{
int value;
};
class orig
{
dummyclass *dummy;
char str[100];
public:
//default constructor
:
//parametrised constructor
orig(char *p)
{
dummy = new dummyclass;
//rest of the initialisation
}
orig(const orig& duplicate)
{
//copy constructor
}
};
int main()
{
orig o("Hello");//constructor
orig dup(o);//copy constructor
}
我知道這樣,我們可以調用拷貝constructor.But如果指針鄰即*Ø給出如何調用拷貝構造函數,做深拷貝功能。
當希望你可以調用拷貝構造函數按照馬克·加西亞的回答。你可以從指針創建一個構造函數 - 它應該做複製構造函數應該做的事情 - 'dummy = new dummyclass(p-> dummy); std :: copy(str,p-> str,p-> str + 100);'。你需要一個析構函數來「刪除虛擬」。在'dummyclass'上有一個'clone()'函數是一個更加結構化的方法,但是對於一個'int'成員來說是過度的。 –
@TonyD實際上,使用指針已經在* overkill *這裏了。 –