请试着改良‘
时间: 2023-07-02 13:18:25 浏览: 83
3个著名语言运行速度测试(改良版).zip
如果想要解决这个问题,可以将People类的构造函数改为虚函数,这样在运行时可以动态绑定到派生类的构造函数。具体做法是将People类的构造函数声明为虚函数,例如:
```
class People {
public:
virtual ~People() {}
virtual void setId(int id) { this->id = id; }
virtual void setName(const string& name) { this->name = name; }
virtual void setSex(const string& sex) { this->sex = sex; }
virtual void setPhone(const string& phone) { this->phone = phone; }
protected:
int id;
string name;
string sex;
string phone;
};
class Worker : public People {
public:
Worker(int id, const string& name, const string& sex, const string& phone) {
setId(id);
setName(name);
setSex(sex);
setPhone(phone);
}
};
```
这样就可以将Worker类型的指针赋值给People类型的指针,而不需要进行强制类型转换。当然,这样做的前提是Worker类确实是继承自People类的,否则无法实现动态绑定。
阅读全文