class A
{
protected:
int m_a;
int m_b;
};
class B: public A
{
};
在 B 类中,我想将其设为m_a
私有。以下是正确的方法吗
class B:public A
{
private:
int m_a;
};
这不会导致 2 个副本m_a
吗?
class A
{
protected:
int m_a;
int m_b;
};
class B: public A
{
};
在 B 类中,我想将其设为m_a
私有。以下是正确的方法吗
class B:public A
{
private:
int m_a;
};
这不会导致 2 个副本m_a
吗?
调整成员访问控制的正确方法是using
声明:
class B: public A {
private:
using A::m_a;
}
仅仅写入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!
}
};
此代码在 B 类中创建三个 int 存储。
m_a 的声明创建了一个新变量 - 这里在 c++ 中没有重新声明问题,因为声明在不同的范围内,更具体地说,A::m_a 与 B::m_a 不同。