我有一个简单的继承案例:
state
如果我将子指针分配给父指针,则完全合法:
class Person {
public:
const char* name;
public:
Person()
: name("Unknown person") {}
Person(const char* name)
: name(name) {}
};
class Student : public Person {
public:
Student()
: Person("Unknown Student") {}
};
但是如果我用另一种方式,将父指针分配给子指针,则会导致错误:
Student *s = new Student();
Person *p = s;
错误是:从‘Person*’到‘Student*’的转换无效。
一个可能有用的例子是:我有一个 Person 类,并且取决于这个人在生活中会做什么,我会将它转换为学生、老师等。
有什么建议吗?
答案 0 :(得分:3)
Person *p = s;
之所以有效,是因为每个 Student
也是一个 Person
。
Student *s = p;
不起作用,因为 Person
不一定是 Student
。