HM128 三种继承改权限
HM128 三种继承改权限
来源: 第 128 集 类和对象-继承-继承方式
难度: 入门
时间限制: 1s
空间限制: 64MB
题目描述
继承语法是 class 派生类 : 继承方式 基类。继承方式有三种:public(公共继承)、protected(保护继承)、private(私有继承)。它们会改变基类成员到派生类之后的访问权限。
基类里有三个成员:
A:基类中为公共B:基类中为保护C:基类中为私有
权限变化如下:
- 基类私有成员无论哪种继承,派生类都访问不到(父亲的隐私,儿子拿不到)。
- 公共继承:
A到派生类仍是公共,B仍是保护。 - 保护继承:
A、B到派生类都变成保护。 - 私有继承:
A、B到派生类都变成私有。
访问位置也要分清:
In:在派生类自己的成员函数里。公共和保护都能访问,私有不能。Out:在类外通过派生类对象访问。只有派生类里仍是公共的成员才能访问。Grand:再定义一个孙子类,用公共继承去继承这个派生类,并在孙子类的成员函数里访问。孙子把派生类当父亲:派生类里已经变成私有的成员,孙子无论哪种继承都拿不到。
请根据继承方式、访问位置和成员,判断能不能访问。
输入格式
第一行一个整数 \(q\)(\(1 \le q \le 1000\))。
接下来 \(q\) 行,每行三个单词:
- 继承方式:
Public/Protected/Private - 访问位置:
In/Out/Grand - 成员:
A/B/C
输出格式
对每组询问输出一行 YES 或 NO,行末换行。
样例
输入 #1
8
Public In A
Public In C
Public Out A
Public Out B
Protected Out A
Private In B
Private Grand A
Private In C
输出 #1
YES
NO
YES
NO
NO
YES
NO
NO
输入 #2
3
Protected In A
Protected In B
Protected Grand A
输出 #2
YES
YES
YES
说明
- 样例 #1:公共继承时,类内能访问
A不能访问C;类外只能点到仍是公共的A,保护成员B类外不行。私有继承后A、B变成儿子自己的私有,儿子类内仍可访问,但类外和孙子都不行。 - 样例 #2:保护继承后
A、B都是保护,儿子类内可以访问;孙子用公共继承时,保护成员对孙子类内仍可访问。 C在任何继承方式、任何位置都是NO。
信息
- ID
- 1127
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者