C++类与对象总结:封装、继承与多态

5星 · 超过95%的资源 需积分: 9 9 下载量 135 浏览量 更新于2024-09-15 收藏 171KB PDF 举报
"C++知识总结" C++是一种强大的、面向对象的编程语言,它结合了低级编程的效率和高级编程的抽象能力。本总结主要关注C++的基础知识,包括类的定义、class与struct的区别、面向对象的概念以及内联函数的特性。 1. 类的定义: C++中的类是构建对象的基础,可以包含数据成员和成员函数。有两种定义方式:一是直接在类定义中声明和定义成员函数;二是将成员函数定义放在类定义之外的单独文件中。这种方式有利于代码组织和模块化。 2. class与struct的区别: - 在C中,struct仅用于定义数据结构,不支持方法,而C++的struct则可以拥有成员函数。 - C的struct成员默认具有公共访问权限,C++的class默认为私有(private)。 - C++的空struct会占用1个字节的空间,而C++的class在创建对象时才会分配空间,并且如果包含虚函数,会额外增加4个字节(取决于平台)用于虚函数表指针。 3. 面向对象特性: - 面向对象编程(OOP)的核心概念包括抽象、封装、继承和多态。类是实现这些特性的基础,通过封装将数据和操作数据的方法结合在一起,形成一个独立的实体。 - 封装是将数据和操作这些数据的函数捆绑在一起,保护数据不受外部直接访问,提高代码的安全性和可维护性。 4. 面向对象与面向过程的区别: - 面向过程编程侧重于算法和步骤,而面向对象编程更关注类的设计和对象的交互。 - 面向过程使用函数来解决问题,面向对象则通过类的设计和对象实例来实现功能。 - 面向过程的流程图和面向对象的类图或用例图分别代表了两种不同的设计思路。 5. 内联函数(inline): - 内联函数是一种优化手段,用于避免函数调用带来的开销。通常,简短且无switch语句的成员函数会被考虑为内联函数。在类中定义的成员函数默认被视为内联函数。 - 内联函数不是预处理指令,而是一个函数,它在运行时被插入到调用处,与宏相比,内联函数有类型检查,避免了宏的某些问题,如类型安全和二义性。 - 内联函数可以节省调用时间,但会增加代码大小,反之,非内联函数节省内存,但调用时会有额外开销。 6. 对象的内存占用: 一个类的对象所占空间的大小取决于类中所有数据成员的总大小,加上任何虚函数指针(如果类包含虚函数),以及可能的对齐填充。对齐填充确保了对象在内存中的位置符合特定的对齐规则,以提高访问效率。 了解并熟练掌握这些基本概念是成为C++程序员的基础,通过深入学习和实践,可以进一步探索C++的模板、异常处理、STL(标准模板库)、多线程等高级主题。