首页 > 编程语言 >[C++]封装

[C++]封装

时间:2024-07-11 23:55:44浏览次数:12  
标签:封装 访问 double C++ height width Rectangle

一、封装的定义

封装是面向对象编程(OOP)的三大基本特性之一(封装、继承、多态)。它指的是将数据(属性)和操作这些数据的方法(函数)结合成一个独立的单元(类),并尽可能隐藏对象的内部细节,仅对外公开接口。这样做的目的是保护对象的数据,防止外部代码直接访问对象内部的数据结构,减少错误并简化复杂性。

二、封装的目的

  1. 数据隐藏:保护对象的数据,避免外部直接访问,防止数据被非法修改。
  2. 接口明确:通过公开有限的接口(方法),使外部代码只能通过这些接口与对象交互,从而明确对象的行为。
  3. 模块化:将相关的数据和操作封装在一起,提高了代码的模块化和可重用性。

三、C++中实现封装的方法

  1. 使用类(Class):定义类时,将数据成员(属性)设为私有(private)或保护(protected),而将操作这些数据的方法设为公有(public)。这样,外部代码就无法直接访问类的私有成员,只能通过公有方法间接访问。

  2. 访问修饰符

    • public:任何外部代码都可以访问。
    • protected:只能在类本身、派生类(子类)中访问。
    • private:只能在类本身中访问,派生类也不能访问。
  3. 构造函数和析构函数:通过构造函数初始化对象,通过析构函数清理对象占用的资源。它们也是封装的一部分,因为它们控制对象的生命周期。

四、示例

下面是一个简单的C++封装示例,展示了一个Rectangle(矩形)类的实现。

#include <iostream>  
  
class Rectangle {  
private:  
    double width;  // 矩形的宽  
    double height; // 矩形的高  
  
public:  
    // 构造函数  
    Rectangle(double w, double h) : width(w), height(h) {}  
  
    // 设置宽度  
    void setWidth(double w) {  
        width = w;  
    }  
  
    // 获取宽度  
    double getWidth() const {  
        return width;  
    }  
  
    // 设置高度  
    void setHeight(double h) {  
        height = h;  
    }  
  
    // 获取高度  
    double getHeight() const {  
        return height;  
    }  
  
    // 计算面积  
    double getArea() const {  
        return width * height;  
    }  
};  
  
int main() {  
    Rectangle rect(5.0, 10.0);  
    std::cout << "Rectangle area: " << rect.getArea() << std::endl;  
    rect.setWidth(7.0);  
    std::cout << "New Rectangle area: " << rect.getArea() << std::endl;  
    return 0;  
}

 在这个例子中,Rectangle类将widthheight属性设为私有,外部代码无法直接访问它们。相反,我们通过公有方法(如setWidthgetHeightgetArea)来访问和修改这些私有属性。这种方式实现了数据的封装,同时提供了清晰的接口供外部使用。

标签:封装,访问,double,C++,height,width,Rectangle
From: https://blog.csdn.net/weixin_45843323/article/details/140364857

相关文章

  • 【C++】通讯录管理系统+少量数据结构
    #include<iostream>#include<string>usingnamespacestd;#definemax1000structnewp{ stringname; intsex; intage; stringnumber; stringadd;};structbooks{ structnewpa[max]; intsize;};staticvoidshowMenu(){ cou......
  • 【C++ 】C++ 停车场收费系统(源码)【独一无二】
    ......
  • C++入门——“命名空间”、“缺省参数”、“函数重载”、“引用”
    C++在C语言的基础上增加了许多东西,在我看来,它和它的名字一样,是C语言的Plus的Plus版本,而且支持C语言的大部分语法,让码农写起来很是别有一番韵味。在这里向大家介绍C++的一些语法结构。一、命名空间    在进行C语言的开发当中,随着代码量的增加,或者工程变得复杂,我们进行......
  • Java基础,面向对象,类与对象,全局和局部变量,三大特征--封装,构造方法,JavaBean的编写---入
    一.面向对象面向过程和面向对象的区别     面向过程:强调步骤    面向对象:强调对象,对象洗衣机帮我们完成举例:洗衣服面向过程:面向对象:脱衣服->打开洗衣机->按钮->晾衣服面向对象的三大特征-----封装,继承,多态对象:万物皆可对象类:一组相关属性和行为的集......
  • C++——类和对象(上)
    文章目录一、类的定义1.类定义格式2.访问限定符3.类域二、实例化1.实例化概念2.对象⼤⼩三、this指针一、类的定义1.类定义格式与定义结构体类似classST{ //成员变量 intval; //成员函数 voidprint() { cout<<val<<endl; }};class为定义类......
  • C++ 入门07:静态成员和常量成员
    往期回顾:C++入门04:数组与字符串-CSDN博客C++入门05:类和对象-CSDN博客C++入门06:类的进阶(构造函数的重载与拷贝构造函数)-CSDN博客 一、前言在前面文章的学习中,我们掌握了类和对象的基础知识以及构造函数的重载与拷贝构造函数。今天,我们将学习类的静态成员和常量成员......
  • C++算法实践07-回文数
    一、题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例1:输入:x=121输出:true示例 2:输入:x=-121输出:false解释:从左向右读,为-121。从右......
  • C++算法实践06-整数反转
    一、题目:给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1] ,就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例......
  • C++冒泡排序(使用vector动态数组)
    #include<iostream>#include<vector>usingnamespacestd;voidsort(vector<int>&a){  constintsize=a.size();  inttemp;  intflag=1;  while(flag==1)  {  flag=0;  for(inti=0;i<size;++i)  {   if(a[i]>......
  • c++方法
    std::transform方法std::transform是C++标准库算法中的一个非常有用的函数,它定义在头文件中。这个函数用于将给定范围内的每个元素按照指定的操作进行转换,并将转换结果存储在另一个位置(可以是原始范围的另一个容器,或者完全不同的位置)。std::transform提供了一个灵活的......