HM102 默认权限

HM102 默认权限

HM102 默认权限

来源: 第 102 集 类和对象-封装-c++中class和struct的区别

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

在 C++ 里,classstruct 都能用来写类,唯一区别是默认访问权限不同:

  • struct 的默认权限是 public(公共)
  • class 的默认权限是 private(私有)

“默认”的意思是:成员前面什么权限都不写。类内访问不受这个差别影响——无论默认是公共还是私有,类内都能读写该成员。差别出现在类外:

  • class C1 { int mA; }; 实例化后,类外写 c1.mA = 100 非法。
  • struct C2 { int mA; }; 实例化后,类外写 c2.mA = 100 合法。

请同时实现默认权限的 class C1struct C2(都只含一个未写权限的整数成员 mA)。处理 \(q\) 次实验:

  • 1 v:试图从类外给 C1::mA 赋 \(v\),输出 DENIED
  • 2 v:从类外给 C2::mA 赋 \(v\),输出 PUBLIC v
  • 3 v:在 C1 的成员函数里给 mA 赋 \(v\),再读出来,输出 INNER v
  • 4 v:在 C2 的成员函数里给 mA 赋 \(v\),再读出来,输出 INNER v

输入格式

第一行一个整数 \(q\)(\(1 \le q \le 1000\))。

接下来 \(q\) 行,每行两个整数 \(t\)、\(v\)(\(t \in \{1,2,3,4\}\),\(|v| \le 10^9\))。

输出格式

每行一次实验结果,行末换行。

样例

输入 #1

4
1 100
2 100
3 50
4 50

输出 #1

DENIED
PUBLIC 100
INNER 50
INNER 50

输入 #2

2
2 0
1 -1

输出 #2

PUBLIC 0
DENIED

说明

  • class / struct 都能表示类,不要以为只有 class 才能写类。
  • 类内访问两种写法都能成功;类外只有 struct 的默认成员能直接点出来。
  • 必须真正定义 class C1struct C2,其中默认成员前面不要写 public / private

信息

ID
1101
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者