C++封装详解

您所在的位置:网站首页 封装的代码怎么实现的 C++封装详解

C++封装详解

2024-07-13 07:15| 来源: 网络整理| 查看: 265

C++封装详解——从原理到实践 引言1.1 什么是封装1.2 为什么使用封装 封装原理2.1. 类和对象2.2 C++类成员的访问权限以及类的封装访问权限控制继承权限公有继承保护继承私有继承 2.3. 成员函数和成员变量2.4. 构造函数和析构函数 封装实践3.1. 设计一个简单的类3.1.1. 定义类及其成员变量3.1.2. 定义成员函数3.1.3. 定义构造函数和析构函数 3.2. 使用类创建对象3.2.1. 实例化对象3.2.2. 访问成员函数和成员变量 3.3. 继承与多态3.3.1. 类的继承3.3.2. 多态的实现 C++动态库的封装与设计4.1 动态库基本概念4.2 动态库的封装4.3 动态库封装的注意点 C++ 封装的优点总结

引言 1.1 什么是封装

封装(Encapsulation)是面向对象编程(OOP)的四大基本特性之一(封装、继承、多态、抽象)。它可以将类的实现细节隐藏起来,暴露出一个简洁、清晰的接口。封装提高了代码的可读性、安全性和易维护性,有利于更高效地进行软件开发。

1.2 为什么使用封装

封装的主要优点如下:

提高代码的可重用性提高代码的安全性,避免外部直接访问内部数据降低代码的耦合度,有利于模块化开发提高代码的可读性和可维护性 封装原理 2.1. 类和对象

类(Class)是一种用于描述对象特征和行为的蓝图,而对象(Object)是类的实例。类定义了对象的属性和方法,对象则是具体化的类。

2.2 C++类成员的访问权限以及类的封装 访问权限控制 一个类的public的成员变量、成员函数,可以通过类的实例变量进行访问。一个类的protected的成员变量、成员函数,无法通过类的实例变量进行访问,但是可以通过类-的友元函数、友元类进行访问。一个类的private的成员变量、成员函数,无法通过类的实例变量进行访问,但是可以通过类的友元函数、友元类进行访问。 继承权限 公有继承 基类成员访问属性继承方式派生类成员访问属性private 成员public无法访问protected 成员publicprotectedpublic 成员publicpublic 保护继承 基类成员访问属性继承方式派生类成员访问属性private 成员protected无法访问protected 成员protectedprotectedpublic 成员protectedprotected 私有继承 基类成员访问属性继承方式派生类成员访问属性private 成员private无法访问protected 成员privateprivatepublic 成员privateprivate 2.3. 成员函数和成员变量

成员函数用于操作类的数据成员,成员变量用于存储类的属性。

2.4. 构造函数和析构函数

构造函数用于初始化对象,析构函数用于释放对象占用的资源。

封装实践 3.1. 设计一个简单的类

在本节中,我们将设计一个名为“矩形”的简单类,用于表示一个矩形的长和宽,并能计算其面积和周长。

3.1.1. 定义类及其成员变量

首先,我们定义一个名为Rectangle的类,并为其添加两个私有成员变量length和width。

3.1.2. 定义成员函数

接下来,我们为这个类添加公共成员函数来访问和修改私有成员变量,并计算矩形的面积和周长。

class Rectangle { private: double length; double width; public: // 成员函数声明 void setLength(double l); void setWidth(double w); double getLength(); double getWidth(); double area(); double perimeter(); };

现在我们为这些成员函数提供实现。

// 成员函数实现 void Rectangle::setLength(double l) { length = l; } void Rectangle::setWidth(double w) { width = w; } double Rectangle::getLength() { return length; } double Rectangle::getWidth() { return width; } double Rectangle::area() { return length * width; } double Rectangle::perimeter() { return 2 * (length + width); } 3.1.3. 定义构造函数和析构函数

为了初始化矩形对象,我们添加一个构造函数,并为其提供默认值。同时,我们也添加一个析构函数来执行清理操作。

class Rectangle { private: double length; double width; public: // 构造函数与析构函数 Rectangle(double l = 1.0, double w = 1.0); ~Rectangle(); // 成员函数声明 // ... }; // 构造函数与析构函数实现 Rectangle::Rectangle(double l, double w) : length(l), width(w) { } Rectangle::~Rectangle() { // 在这个例子中,我们不需要执行任何操作 } 3.2. 使用类创建对象

现在我们已经定义了Rectangle类,接下来我们将使用它创建对象,并操作这些对象。

3.2.1. 实例化对象

我们可以像下面这样创建一个矩形对象。

int main() { Rectangle rect(10.0, 5.0); return 0; } 3.2.2. 访问成员函数和成员变量

为了访问和操作矩形对象的属性,我们可以使用成员函数。

int main() { Rectangle rect(10.0, 5.0); // 使用成员函数获取矩形的长和宽 double length = rect.getLength(); double width = rect.getWidth(); std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3