HM116 空指针点名

HM116 空指针点名

HM116 空指针点名

来源: 第 116 集 类和对象-对象特性-空指针访问成员函数

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

C++ 允许用空指针调用成员函数,但函数体里是否用到 this 会决定程序安不安全。

请实现人员类型 Person,每人有一个年龄成员 mAge。它提供两个成员函数:

  • showClassName():函数体**不访问任何成员**(因此也不依赖 this 指向真实对象)。无论通过空指针还是有效指针调用,都输出一行 this is a person class
  • showPersonAge():函数体要读取 mAge。成员访问等价于 this->mAge。若 this 为空,必须立刻返回并输出一行 SAFE(拦截非法访问,保证程序不崩溃);若 this 非空,输出一行 age = x,其中 \(x\) 是该对象的年龄。

有若干次调用。每次给出一个指针状态:0 表示空指针,正整数 \(k\) 表示指向年龄为 \(k\) 的人员对象。再给出要调用的函数种类。

输入格式

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

接下来 \(q\) 行,每行两个整数 \(p\)、\(t\)(\(p=0\) 或 \(1 \le p \le 100\);\(t \in \{1,2\}\)):

  • \(p=0\):用空指针调用。
  • \(p>0\):用指向年龄为 \(p\) 的对象的指针调用。
  • \(t=1\):调用 showClassName
  • \(t=2\):调用 showPersonAge

输出格式

对每次调用输出恰好一行,行末换行:

  • \(t=1\):恒为 this is a person class
  • \(t=2\) 且 \(p=0\):SAFE
  • \(t=2\) 且 \(p>0\):age = page、等号、空格、整数)

样例

输入 #1

5
0 1
0 2
18 2
18 1
7 2

输出 #1

this is a person class
SAFE
age = 18
this is a person class
age = 7

输入 #2

2
0 2
0 1

输出 #2

SAFE
this is a person class

说明

  • 空指针可以调用不访问成员的函数,结果与有效对象调用相同。
  • 空指针访问成员会出错;本题要求在函数开头判断 this 是否为空,为空则安全返回。
  • 有效对象调用 showPersonAge 时,输出的年龄来自该对象成员,不是写死的常数。

信息

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