#include
#include
using namespace std;
class Employee{
public:
Employee()
{
name="张三";
adress="北京大学";
city="北京市";
postcode="421001";
}
Employee(Employee &e){
};
void setname(string *n);
void setadress(string *a);
void setcity(string *c);
void setpostcode(string *p);
void display();
private:
string name;
string adress;
string city;
string postcode;
};
void Employee::setname(string n)
{
name=n;
}
;
void Employee::setadress(string a)
{
adress=a;
};
void Employee::setcity(string c)
{
city=c;
};
void Employee::setpostcode(string p)
{
postcode=p;
};
void Employee::display()
{
cout<<"name="<<name<<endl;
cout<<"adress="<<adress<<endl;
cout<<"city="<<city<<endl;
cout<<"postcode="<<postcode<<endl;
};
int main()
{
string n,a,c,p;
Employee E1,E2;
cin>>n>>a>>c>>p;
E1.setname(&n);
E1.setadress(&a);
E1.setcity( &c);
E1.setpostcode(&p);
E1.display();
return 0;
}
我还想创建一个E2的对象,它是由E1复制而来的,并且还可以修改复制而来的成员,怎么用复制构造函数来实现呢?
复制构造函数只能复制,修改的话需要调用成员函数来修改。
你的代码中需要添加get方法来获取成员变量,这样在赋值构造函数中才能获取e的属性。
你的代码中还有一些错误,set方法中不需要用指针。
代码修改如下:
#include <iostream>
#include <string>
using namespace std;
class Employee{
public:
Employee()
{
name="张三";
adress="北京大学";
city="北京市";
postcode="421001";
}
Employee(Employee &e){
this->name = e.getname();
this->city = e.getcity();
this->adress = e.getadress();
this->postcode = e.getpostcode();
};
void setname(string n);
void setadress(string a);
void setcity(string c);
void setpostcode(string p);
string getname(){return name;}
string getadress(){return adress;}
string getcity(){return city;}
string getpostcode(){return postcode;}
void display();
private:
string name;
string adress;
string city;
string postcode;
};
void Employee::setname(string n)
{
name=n;
}
;
void Employee::setadress(string a)
{
adress=a;
};
void Employee::setcity(string c)
{
city=c;
};
void Employee::setpostcode(string p)
{
postcode=p;
};
void Employee::display()
{
cout<<"name="<<name<<endl;
cout<<"adress="<<adress<<endl;
cout<<"city="<<city<<endl;
cout<<"postcode="<<postcode<<endl;
};
int main()
{
string n,a,c,p;
Employee E1;
cin>>n>>a>>c>>p;
E1.setname(n);
E1.setadress(a);
E1.setcity(c);
E1.setpostcode(p);
E1.display();
Employee E2(E1); //调用复制构造函数
E2.setname("haha"); //调用方法修改属性
return 0;
}
Employee(Employee &e),这就是复制构造函数啊,但你写了个空的啊