c++ - 将其中一个继承的 protected 成员设为私有(private)

标签 c++ inheritance

class A
{
protected:
    int m_a;
    int m_b;
};

class B: public A
{
};

在 B 类中,我想将 m_a 设为私有(private)。 下面的做法是否正确

class B:public A
{    
private:
    int m_a;
};

这不会产生 2 个 m_a 拷贝吗?

最佳答案

调整成员访问控制的正确方法是使用 using declaration :

class B: public A {    
private:
    using A::m_a;
}

只写 int m_a; 确实会导致 m_a 的两个拷贝,并且派生类将能够访问 A 的通过编写 A::m_a 复制 m_a

关于c++ - 将其中一个继承的 protected 成员设为私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510953/

相关文章:

c++ - 如何使用 Apache C 模块记录到文件

c++ - 在 Windows 7 上安装 libusb-1.0

c++ - 在具有容量/调整大小的类中初始化 vector

c++ - C++中的向下转换继承

java - Java中final字段的继承?

Java 重写方法丢弃异常

c++ - 为什么 64 位 ubuntu 中的 gcc 没有检测到以下数组溢出?

c++ - C++编译器错误: 'not declared in this scope'

delphi - 如何在 Delphi 运行时更改继承类的父类?

c++ - 如何根据构造函数参数用父类(super class)类型初始化成员变量?