C++面向对象编程:静态成员函数与圆的周长面积计算

需积分: 45 61 下载量 117 浏览量 更新于2024-08-08 收藏 3.88MB PDF 举报
"该资源是关于操作系统设计的书籍《operating system design: the xinu approach 2nd edition》中的一个部分,主要讨论了C++中的静态成员函数。此外,还提供了C++学习的实例,包括用面向对象方法求解圆的周长和面积。" 在C++中,静态成员函数是一种特殊类型的成员函数,它与类的实例(对象)无关,而是与类本身关联。静态成员函数的主要特点如下: 1. **关键字 static**: 静态成员函数需要在声明时使用`static`关键字进行标记,这使得它们在类的非成员函数之外也能被调用。 2. **无 this 指针**: 与普通成员函数不同,静态成员函数不能访问类的非静态成员,因为它们在调用时不会隐含地传递一个指向类实例的指针(this指针)。这意味着静态成员函数不能直接操作类的实例数据。 3. **调用方式**: 静态成员函数可以像全局函数一样被调用,使用类名和作用域解析运算符`::`来调用,例如 `ClassName::functionName()`。同时,也可以通过类的对象来调用,尽管这种调用方式并不需要对象实例,因为静态成员不依赖于任何特定的实例。 下面是一个简单的C++程序示例,演示了如何使用面向对象方法来求解圆的周长和面积: ```cpp class Circle { double radius; // 成员变量 public: // 类的访问控制 void Set_Radius(double r) { radius = r; } // 设置半径 double Get_Radius() const { return radius; } // 获取半径 double Get_Girth() const { return 2 * 3.14f * radius; } // 计算周长 double Get_Area() const { return 3.14f * radius * radius; } // 计算面积 }; int main() { Circle A, B; // 使用类定义对象 A.Set_Radius(6.23); // 调用类的成员函数 std::cout << "A.Radius=" << A.Get_Radius() << endl; std::cout << "A.Girth=" << A.Get_Girth() << endl; std::cout << "A.Area=" << A.Get_Area() << endl; B.Set_Radius(10.5); std::cout << "B.Radius=" << B.Get_Radius() << endl; // ... 继续输出B的周长和面积 } ``` 在这个例子中,`Circle`类包含了表示圆的半径以及与之相关的操作。类的成员函数如`Set_Radius`和`Get_*`用于设置和获取圆的属性。这里并没有使用静态成员函数,因为它们涉及的是特定圆实例的属性,而静态成员函数通常用于不依赖于实例状态的操作,例如类级别的计数器或类级别的常量等。 学习C++时,理解静态成员函数的概念及其用途至关重要,因为它们能够帮助我们更好地组织代码,实现更清晰的职责划分,并在某些情况下提高效率。在实际项目中,静态成员函数经常用于提供类的工具函数,这些函数不修改类的状态,而只执行计算或检查。