我的代碼也可以找到here。如何正確地從內部運算符構造函數調用複製構造函數?
此代碼將工作(但仍然有很多重複代碼):
Employee::Employee(const Employee& x)
{
name=new char [strlen(x.name)+1];
strcpy(name, x. name);
strcpy(EGN, x.EGN);
salary=x.salary;
}
void Employee::operator=(const Employee& x)
{
delete[] name;
name=new char [strlen(x.name)+1];
strcpy(name, x. name);
strcpy(EGN, x.EGN);
salary=x.salary;
}
Employee::Employee(char* n, char* e, double s)
{
name = new char [strlen(n)+1];
strcpy(name, n);
strcpy(EGN, e);
salary=s;
}
下面是我試圖避免編寫同樣的事情三次...但它不工作。難道不能縮短代碼嗎?
Employee::Employee(char* n, char* e, double s)
{
name = new char [strlen(n)+1];
strcpy(name, n);
strcpy(EGN, e);
salary=s;
}
Employee::Employee(const Employee& x)
{
Employee(x.name, x.EGN, x.salary);
}
void Employee::operator=(const Employee& x)
{
delete[] name;
Employee(x);
}
請將代碼添加到您的文章,而不是外部網站。 –
將'name'聲明爲'std :: string',讓編譯器爲你生成三巨頭並繼續前進。 – jrok
不可以,它必須是char * –