【问题标题】:c++ class private access modifiersc++ 类私有访问修饰符
【发布时间】:2014-08-27 23:55:16
【问题描述】:

我有这个关于 c++ 类访问修饰符的问题。如果我有一个基本类,假设它看起来像这样:

class A
{
public:
    int a1;
private:
    int a2;
}

如果我创建另一个名为 C 的类,它对类 A 具有公共访问权限,那么变量 a1 将对类 C 是公共的。如果访问是私有的,那么 a1 将对类 C 是私有的,但如果是类 C已保护 A 类的访问,那么 a2 将是 C 类私有的。我的问题是如果我创建 C 类:

class C: private A
{
public:
    int c1;
private:
    int c2;
}

那么我在 C 类中有私有 a2,但是来自 A 类的变量 a1 会成为 C 类的公共变量吗?

【问题讨论】:

标签: c++ private


【解决方案1】:

基类的可访问性规则在以下 C++ 标准的引用中描述

11.2 基类和基类成员的可访问性 [class.access.base] 1 如果一个类被声明为基类 (第 10 条)对于使用公共访问说明符的另一个类, 基类的公共成员可以作为 基类的派生类和受保护成员是 可作为派生类的受保护成员访问。如果一个类是 声明为使用受保护的另一个类的基类 访问说明符,基类的公共和受保护成员 可作为派生类的受保护成员访问。 如果一个班级 被声明为使用私有的另一个类的基类 访问说明符,基类的公共和受保护成员 可作为派生类的私有成员访问

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 2011-02-19
    • 2011-04-18
    • 2011-01-31
    • 1970-01-01
    • 2023-04-03
    • 2015-11-26
    相关资源
    最近更新 更多