派生derive
D derived from B
合法赋值:
B = D (D => B)
B *= D* (D* => B*)
B& = D& (D& => B&)
把子类的对象当做父类来看待(多出来的部分当做不存在):原因在于,子类对象继承父类的全部变量和函数,而继承的这一部分在内存中在对象的堆栈底部,指针指向堆栈底部时,底部的那一部分正好对应父类的全部内容。
将子类的对象当做父类来看待这一行为叫做upcasting(向上造型)
派生derive
D derived from B
合法赋值:
B = D (D => B)
B *= D* (D* => B*)
B& = D& (D& => B&)
把子类的对象当做父类来看待(多出来的部分当做不存在):原因在于,子类对象继承父类的全部变量和函数,而继承的这一部分在内存中在对象的堆栈底部,指针指向堆栈底部时,底部的那一部分正好对应父类的全部内容。
将子类的对象当做父类来看待这一行为叫做upcasting(向上造型)