0 c++ inheritance overloading class multiple-inheritance
继承两个基类时,如果两者都有一个具有相同名称和签名的方法会发生什么?
class Physics
{
public:
void Update() { std::cout << "Physics!" }
};
class Graphics
{
public:
void Update() { std::cout << "Graphics!" }
};
class Shape : Physics, Graphics
{
};
int main()
{
Shape shape;
shape.Update();
}
Run Code Online (Sandbox Code Playgroud)
会发生什么?
好吧,首先你的代码不能编译,无论调用如何Update:
Update成员函数返回缺少类型Shape私有地从Physics和继承Graphics,因此Update无法访问 main现在,话虽如此,当您尝试调用时会发生什么,Update这会导致编译错误.可以使用以下方式解除这种歧义:
shape.Physics::Update();
shape.Graphics::Update();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1186 次 |
| 最近记录: |