MST

星途 面试题库

面试题:C++类成员访问属性设计原则之权限区分

在C++中,类成员有public、private和protected三种访问属性。请举例说明在一个简单的图形类(比如Circle类)中,如何合理地使用这三种访问属性来设计类成员,以符合类成员访问属性的设计原则,并阐述这样设计的好处。
47.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

示例代码

#include <iostream>
// 定义Circle类
class Circle {
private:
    // 私有成员变量,半径
    double radius; 
public:
    // 公有构造函数,用于初始化半径
    Circle(double r) : radius(r) {} 

    // 公有成员函数,用于获取圆的面积
    double getArea() const { 
        return 3.14159 * radius * radius;
    }

    // 公有成员函数,用于获取圆的周长
    double getCircumference() const { 
        return 2 * 3.14159 * radius;
    }
};

设计说明

  1. private属性radius 被设为 private,这意味着只有类内部的成员函数可以访问它。这样设计的好处是保护数据的完整性和安全性,防止外部代码随意修改半径值,从而避免出现不合理的数据。
  2. public属性:构造函数 Circle(double r) 和成员函数 getArea()getCircumference() 被设为 public。构造函数用于在创建对象时初始化 radius,而 getArea()getCircumference() 用于向外部提供获取圆的面积和周长的功能。这样设计符合类的设计原则,外部代码只需要通过这些公有接口来操作对象,而不需要关心对象内部数据的存储细节。

通过这样合理使用 publicprivate 访问属性,使得 Circle 类的数据和操作得到了有效的封装,提高了代码的可维护性和可扩展性。在这个简单例子中没有用到 protected 属性,如果后续有继承关系,protected 成员可以被派生类访问,有助于实现继承体系下合理的数据访问控制。