面试题答案
一键面试- 设置访问属性的方法
- 将关键数据成员设置为
private
或protected
。private
成员只能被类自身的成员函数访问,外部类和派生类都无法直接访问。protected
成员能被类自身的成员函数以及派生类的成员函数访问,但外部类不能直接访问。
- 通过在类中定义
public
成员函数来提供对关键数据成员的间接访问和操作。这些public
成员函数可以进行必要的检查和控制,以确保数据的正确性和一致性。
- 将关键数据成员设置为
- 举例说明
#include <iostream>
class Example {
private:
int criticalData; // 关键数据成员,设为private
public:
// 构造函数
Example(int data) : criticalData(data) {}
// 获取关键数据成员的函数
int getCriticalData() const {
return criticalData;
}
// 修改关键数据成员的函数,可进行必要的检查
void setCriticalData(int newData) {
if (newData >= 0) { // 假设数据必须是非负的
criticalData = newData;
} else {
std::cerr << "Invalid data. Data must be non - negative." << std::endl;
}
}
};
int main() {
Example ex(10);
// 无法直接访问criticalData,如下操作会报错
// ex.criticalData = 20;
// 通过public成员函数访问和修改
std::cout << "Current data: " << ex.getCriticalData() << std::endl;
ex.setCriticalData(20);
std::cout << "New data: " << ex.getCriticalData() << std::endl;
ex.setCriticalData(-1);
std::cout << "After invalid set, data: " << ex.getCriticalData() << std::endl;
return 0;
}
在上述例子中,criticalData
被设置为private
,外部类不能直接修改它。通过public
成员函数getCriticalData
和setCriticalData
,外部类可以间接获取和修改criticalData
,并且在setCriticalData
函数中可以进行数据有效性检查,保证数据的正确性。