面试题答案
一键面试1. 访问控制修饰符的作用
- public:表示公有成员,类的外部和派生类都可以访问这些成员。
- private:表示私有成员,只有类的内部成员函数可以访问,类的外部和派生类都无法访问。
- protected:表示受保护成员,类的内部成员函数可以访问,派生类也可以访问,但类的外部无法访问。
2. 实际类设计中不同修饰符的使用成员及好处
public
- 通常用于:提供给外部用户调用的接口函数,例如类的构造函数、析构函数、获取和设置数据成员的函数等。
- 好处:提供了类与外部世界交互的接口,使外部代码能够方便地使用类的功能,同时隐藏类内部的实现细节,保证了类的封装性。
示例代码
class Example {
public:
Example(int value) : data(value) {}
int getData() const { return data; }
void setData(int value) { data = value; }
private:
int data;
};
在上述代码中,Example
类的构造函数、getData
和 setData
函数是 public
的,外部代码可以通过这些函数创建对象、获取和设置 private
成员 data
的值。
private
- 通常用于:类的内部数据成员和一些辅助函数,这些函数不希望被外部调用,仅用于类内部的逻辑实现。
- 好处:将类的实现细节隐藏起来,防止外部代码直接修改数据成员,提高了数据的安全性和类的可维护性。外部代码只能通过
public
接口来间接访问和修改private
数据,这样可以在接口函数中添加必要的逻辑判断和数据验证。
protected
- 通常用于:在基类中,如果一些成员希望被派生类访问,但不希望被外部代码访问,就可以将这些成员声明为
protected
。比如基类中一些通用的辅助函数或数据成员,派生类可能需要在重写或扩展功能时使用。 - 好处:为派生类提供了访问基类部分成员的权限,同时避免了这些成员被外部随意访问,有助于实现代码的复用和继承体系的合理设计。
示例代码
class Base {
protected:
int protectedData;
void protectedFunction() {
// 一些逻辑
}
};
class Derived : public Base {
public:
void useProtectedMembers() {
protectedData = 10;
protectedFunction();
}
};
在上述代码中,Base
类的 protectedData
和 protectedFunction
成员在 Derived
类中可以被访问和使用,而外部代码无法直接访问它们。