面试题答案
一键面试设计思路
- 在基类
Base
中定义保护成员protectedData
。 - 在派生类
Derived
中,adjustAccess
函数根据用户输入来设置一个标志位,用于标记是否需要临时提升访问权限。 - 定义一个成员函数,如
computeSquare
,在该函数中根据标志位来决定是否可以访问protectedData
并进行平方计算。
关键代码实现
#include <iostream>
class Base {
protected:
int protectedData;
public:
Base(int data) : protectedData(data) {}
};
class Derived : public Base {
private:
bool canAccess;
public:
Derived(int data) : Base(data), canAccess(false) {}
void adjustAccess() {
bool input;
std::cout << "请输入一个布尔值 (true/false) 来决定是否提升访问权限: ";
std::cin >> input;
canAccess = input;
}
int computeSquare() {
if (canAccess) {
return protectedData * protectedData;
} else {
std::cerr << "访问被拒绝" << std::endl;
return -1;
}
}
};
你可以这样使用这个类:
int main() {
Derived d(5);
d.adjustAccess();
int result = d.computeSquare();
if (result != -1) {
std::cout << "平方结果是: " << result << std::endl;
}
return 0;
}