C++类详解:封装、构造与动态存储

需积分: 13 0 下载量 139 浏览量 更新于2024-07-18 收藏 1.13MB PPT 举报
本章节深入探讨了C++中的类及其对象封装性,这是面向对象程序设计的重要组成部分。从结构到类的转换是关键概念,它涉及到从基本的数据类型如int、float和自定义数据类型(如结构体)提升到更高级的抽象概念——类。类是数据类型的一种,用于封装数据和相关的操作。 4.1 从结构到类 在C++中,我们首先复习了结构(struct),这是一种用户自定义的数据类型。例如,通过`struct empData`定义了一个结构,用于存储雇员的代码和周薪。类(class)在此基础上提供了一种更灵活的封装方式,允许数据和行为的组合。类的声明通常以"class"关键字开始,如`class empData`。 4.2 类的成员函数 类的成员函数包括构造函数(用于初始化对象)和析构函数(在对象生命周期结束时执行清理工作)。构造函数通常是`empData(const char*, float)`这样的形式,用于创建类的新实例,并设置初始值。析构函数则没有显式参数,其名称通常为`~empData()`,用于释放内存和其他资源。 4.3 构造函数与析构函数 构造函数确保对象的正确初始化,而析构函数确保对象在不再被引用时自动执行清理操作。这两个函数对于管理内存动态分配的对象尤其重要,因为它们负责在对象创建和销毁时进行内存的分配和回收。 4.4 动态存储 动态存储是指程序在运行时根据需要分配内存。在C++中,我们可能使用`new`关键字为类对象分配内存,如`empData* emp = new empData();`。这使得程序可以根据需要创建多个类实例,而无需预先知道所有对象的数量。同时,通过`delete`关键字手动释放动态分配的内存以避免内存泄漏。 5. 示例与错误分析 在实践过程中,可能会遇到编译错误,如提到的`errorC2248`,这是试图访问类成员但权限不足的问题。这表明尝试访问的是私有(private)成员,即只能在类的内部访问的变量或函数。解决这类问题需要确保正确的访问控制,例如通过公共(public)、保护(protected)或私有成员来调整类的接口。 总结来说,本章介绍了如何从基础的结构提升到类,以及类的关键特性如成员函数、构造函数和析构函数,以及动态存储的使用。理解这些概念是C++面向对象编程的基础,对于编写高效、可维护的代码至关重要。