class A
{
protected:
int m_a;
int m_b;
};
class B: public A
{
};
Run Code Online (Sandbox Code Playgroud)
在B级我想m_a
私人.以下是正确的方法吗?
class B:public A
{
private:
int m_a;
};
Run Code Online (Sandbox Code Playgroud)
这不会导致2份副本m_a
吗?
调整成员访问控制的正确方法是使用using
声明:
class B: public A {
private:
using A::m_a;
}
Run Code Online (Sandbox Code Playgroud)
只是写作int m_a;
确实会产生两个副本m_a
,派生类将能够通过写入来访问A
副本.m_a
A::m_a
的阴影m_a
中的。它是一个不同的数据成员,因此 B 类实际上具有三个: , 和。私有访问in的方法是私有地“使用” in :class B
class A
ints
A::m_a
A::m_b
B::m_a
m_a
B
A::m_a
class B
class A {
int m_a;
};
class B: public A {
using A::m_a;
};
class C : public B {
void foo() {
m_a++; // ERROR!
}
};
Run Code Online (Sandbox Code Playgroud)