class A
{
protected:
int m_a;
int m_b;
};
class B: public A
{
};
在B班,我想让m_a
私密。
以下是正确的方法吗
class B:public A
{
private:
int m_a;
};
这不会导致m_a
的两份副本吗?
答案 0 :(得分:5)
调整成员访问控制的正确方法是使用using
declaration:
class B: public A {
private:
using A::m_a;
}
只需撰写int m_a;
确实会产生m_a
的两个副本,派生类就能够访问A
的{{1}}副本写m_a
。
答案 1 :(得分:2)
m_a
{strong}阴影中的class B
<{1}}。它是一个不同的数据成员,因此B类实际上有三个class A
:ints
,A::m_a
和A::m_b
。在B::m_a
中私有访问m_a
的方法是在B
中私下“使用”A::m_a
:
class B
答案 2 :(得分:0)
此代码在B类中创建三个int存储。
m_a的声明创建了一个新变量 - 这里c ++中没有重新声明问题,因为声明在不同的范围内,更具体地说A :: m_a与B :: m_a不同。