C++面向对象编程:成员变量与成员函数的处理

需积分: 45 61 下载量 157 浏览量 更新于2024-08-08 收藏 3.88MB PDF 举报
"这篇资料主要讨论了编译器对C++类对象的处理机制,特别是成员变量和成员函数的存储方式。文中通过对比结构化编程和面向对象编程的方法,展示了C++如何对C进行扩展,并提供了求解圆的周长和面积的实例来解释这一概念。" 在C++中,类是面向对象编程的基础,它允许我们将数据(成员变量)和操作这些数据的函数(成员函数)封装在一起。当创建一个类的对象时,编译器会采取特定的策略来处理这些成员。 1. **成员变量**:C++类的成员变量是在内存中按照它们声明的顺序分配的,但它们并不与类的对象存在同一块内存空间。成员变量通常存储在对象的实例内存中,也就是常说的堆栈或堆。这意味着每个类的实例都有自己独立的一份成员变量副本,不同对象的成员变量可以有不同的值。 2. **成员函数**:不同于成员变量,C++的成员函数并不直接存储在对象的内存中。它们像普通的全局函数一样存储在代码段中,但在调用时,通过隐含的`this`指针与特定对象关联起来。成员函数可以访问对象的私有和公有成员,而无需直接包含在对象的内存布局中。 在描述的示例中,我们看到两种编程方法: - **方法1:结构化编程** - 使用传统的C风格函数处理数据,没有封装的概念。这里,圆的半径、周长和面积作为全局变量处理,计算过程在主函数中完成。 - **方法2:面向对象编程** - 创建了一个名为`Circle`的类,其中包含了`radius`成员变量以及用于设置和获取半径、周长和面积的成员函数。这种方法通过对象实例`A`和`B`来调用这些成员函数,使得代码更具有封装性和可复用性。 在面向对象的`Circle`类中,`Set_Radius`、`Get_Radius`、`Get_Girth`和`Get_Area`是成员函数,它们分别用于设置和获取半径,以及计算和返回圆的周长和面积。`const`关键字用于声明`PI`为常量,确保其值不可修改。通过这种方式,成员函数可以安全地访问并操作类的内部状态,同时隐藏实现细节。 这种分离成员变量和成员函数的处理方式是C++面向对象特性的一个关键方面,它促进了代码的模块化、封装和多态性,从而提高了软件的可维护性和可扩展性。在实际编程中,这样的设计使得代码更加清晰,更易于理解,并且能够更好地模拟现实世界的问题和解决方案。