class Base
{
public:
type1 m_Pants;
};
class Derived : Base
{
public:
type2 m_Pants
};
Run Code Online (Sandbox Code Playgroud)
这基本上没有被标记为错误,但是在整个项目中创建了各种各样的破坏和问题.
有没有人知道不会标记这一点的技术性?
它不会被标记为错误,因为它不是错误.没有任何内容表明您不能在派生类中拥有与基类中的成员命名相同的成员.
如果你有一个obj类型的对象Derived,那么obj.m_Pants引用m_Pantsin Derived.如果要引用基本成员,可以使用obj.Base::m_Pants.
如果你是一个成员函数Base或者Base*指向一个类型的对象Derived,那么m_Pants总是引用它的成员Base,因为在那些上下文中不知道该类Derived及其成员.
嗯,这不是代码错误; 这几乎肯定是一个设计错误.
它确实做了它应该做的事情。派生阴影基础。