我有一个关于继承如何工作的问题。当我们从彼此继承类时,一个类可以访问另一个类的成员,但这非常简单。我对继承中发生的事情的更精确定义感兴趣。现在让我解释一下是什么促使我产生了这个想法。有2个类:
class Parent
{
};
class Child : public Parent
{
public:
void say()
{
cout << "I am child";
}
};
现在,我感兴趣的最重要的事情:
int main()
{
Parent variable = Child();
}
为什么这个条目有效并且一切都编译得很好?现在还有一点,如果我尝试这样做:
variable.say();
然后什么都对我不起作用,虽然看起来variable
类的对象就在里面Child
,而且Child
它有一个方法say
,但是我不能调用它,怎么会呢?请解释当一个类从另一个类继承时会发生什么,显然父类的成员不只是简单地复制到继承类,但是这种情况以某种不同的方式发生,如何?
我该怎么说...
只有
Child
a 匹配的部分Parent
。为什么会编译?好吧,因为Child
两者都是Parent
...... :)对象
variable
只是 type 的对象Parent
,包含它所包含的所有内容。请注意,您也不能这样做
出于同样的原因 -
variable
是指向 的指针Parent
,但没有say()
yParent
。既不普通也不虚拟。