C++ 封装特性

1. 属性和行为作为一个整体

属性:类的成员变量,描述对象的状态(如长、宽、高)。

行为:类的成员函数,描述对象的操作(如计算体积、表面积)。

通过类将属性和行为封装在一起,形成一个完整的对象。

2. 访问权限

C++类成员有三种访问权限:

关键字 说明
public 公有成员,类外可访问
protected 受保护成员,派生类可访问
private 私有成员,仅类内可访问

3. class和struct的区别

• class默认成员访问权限为private

• struct默认成员访问权限为public

• 其他用法基本一致。

4. 将成员属性设置为私有

• 推荐将属性(成员变量)设为private,通过public成员函数(如getter/setter)访问和修改,保证数据安全和封装性。

5. 立方体类设计示例

cpp 复制代码
#include <iostream>

class Cube {
private:
    double length; // 私有属性
    double width;
    double height;

public:
    // 构造函数
    Cube(double l, double w, double h) : length(l), width(w), height(h) {}

    // 设置属性的公有方法(setter)
    void setLength(double l) { length = l; }
    void setWidth(double w) { width = w; }
    void setHeight(double h) { height = h; }

    // 获取属性的公有方法(getter)
    double getLength() const { return length; }
    double getWidth() const { return width; }
    double getHeight() const { return height; }

    // 行为:计算体积
    double volume() const {
        return length * width * height;
    }

    // 行为:计算表面积
    double surfaceArea() const {
        return 2 * (length * width + length * height + width * height);
    }
};

int main() {
    Cube c(3, 4, 5);
    std::cout << "体积: " << c.volume() << std::endl;
    std::cout << "表面积: " << c.surfaceArea() << std::endl;

    // 通过公有方法访问和修改属性
    c.setLength(6);
    std::cout << "新体积: " << c.volume() << std::endl;

    // 不能直接访问私有属性,下面语句会编译错误
    // c.length = 10;

    return 0;
}

总结

• 封装将属性和行为组合为一个整体,保护数据安全。

• 通过访问权限控制成员的可见性。

• 推荐用class并将属性私有,行为公有。

• 通过getter/setter访问和修改私有属性,体现封装思想。

相关推荐
毕设源码-邱学长5 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
rookieﻬ°6 小时前
PHP框架漏洞
开发语言·php
炸膛坦客7 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
兑生7 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
炸膛坦客8 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
零雲8 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
Jay_Franklin8 小时前
Quarto与Python集成使用
开发语言·python·markdown
2401_831824969 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~9 小时前
【C++小游戏】2048
开发语言·c++
Sunshine for you10 小时前
C++中的职责链模式实战
开发语言·c++·算法