用C++实现一个简单的面向对象程序

下面我们用 C++ 实现一个简单的面向对象程序,以 “矩形(Rectangle)” 类为例,展示封装、构造函数、成员函数、析构函数等面向对象特性:

示例代码:矩形类

cpp
 
运行
#include <iostream>
using namespace std;

// 定义矩形类
class Rectangle {
private:
    // 私有成员变量(封装:外部无法直接访问)
    double width;
    double height;

public:
    // 构造函数(初始化对象)
    Rectangle(double w, double h) : width(w), height(h) {
        cout << "矩形对象已创建!" << endl;
    }

    // 析构函数(对象销毁时调用)
    ~Rectangle() {
        cout << "矩形对象已销毁!" << endl;
    }

    // 成员函数:计算面积
    double getArea() {
        return width * height;
    }

    // 成员函数:计算周长
    double getPerimeter() {
        return 2 * (width + height);
    }

    // 成员函数:设置宽高(提供接口访问私有变量)
    void setSize(double w, double h) {
        if (w > 0 && h > 0) { // 合法性检查
            width = w;
            height = h;
        } else {
            cout << "宽高必须大于0!" << endl;
        }
    }

    // 成员函数:显示信息
    void showInfo() {
        cout << "矩形宽:" << width << ", 高:" << height << endl;
        cout << "面积:" << getArea() << ", 周长:" << getPerimeter() << endl;
    }
};

int main() {
    // 创建矩形对象(调用构造函数)
    Rectangle rect(3.5, 2.0);

    // 调用成员函数
    rect.showInfo();

    // 修改宽高
    rect.setSize(5.0, 4.0);
    rect.showInfo();

    // 错误测试(宽高为负)
    rect.setSize(-2.0, 3.0);

    // 程序结束时,对象销毁(调用析构函数)
    return 0;
}
 

代码解析

  1. 封装特性
    • width 和 height 是私有成员变量(private),外部无法直接访问,只能通过类提供的成员函数(如 setSize)间接操作,保证数据安全性。
  2. 构造函数与析构函数
    • 构造函数 Rectangle(double w, double h) 在创建对象时初始化宽高,析构函数 ~Rectangle() 在对象销毁时执行清理操作(此处仅打印提示)。
  3. 成员函数
    • getArea()getPerimeter() 实现业务逻辑(计算面积和周长)。
    • setSize() 提供安全的接口修改私有变量,并包含合法性检查。

运行结果

plaintext
矩形对象已创建!
矩形宽:3.5, 高:2
面积:7, 周长:11
矩形宽:5, 高:4
面积:20, 周长:18
宽高必须大于0!
矩形对象已销毁!
 

扩展:继承与多态(可选)

如果想进一步展示继承和多态,可以定义一个基类 Shape(形状),让 Rectangle 继承它:
cpp
 
运行
 
#include <iostream>
using namespace std;

// 基类:形状
class Shape {
public:
    virtual double getArea() = 0; // 纯虚函数(抽象方法)
    virtual ~Shape() {} // 虚析构函数
};

// 派生类:矩形
class Rectangle : public Shape {
private:
    double width, height;
public:
    Rectangle(double w, double h) : width(w), height(h) {}
    double getArea() override { // 重写纯虚函数
        return width * height;
    }
};

int main() {
    Shape* shape = new Rectangle(3, 4);
    cout << "面积:" << shape->getArea() << endl; // 输出12
    delete shape;
    return 0;
}
 
这个例子展示了面向对象的核心特性,适合初学者理解 C++ 的类与对象使用方式。
posted @ 2025-12-02 16:24  C++大哥来也  阅读(0)  评论(0)    收藏  举报