面向对象编程(OOP)

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的函数封装在一起,形成一个对象。OOP的主要思想是将程序中的数据和对数据的操作封装在一个对象中,通过对象之间的交互来实现程序的功能。

OOP有以下几个核心概念:

  1. 类(Class)

    • 类是一种用户自定义的数据类型,它定义了一组属性(数据成员)和方法(成员函数)。
    • 类可以看作是创建对象的模板,它描述了对象的属性和行为。
  2. 对象(Object)

    • 对象是类的实例,它是具体的、实际存在的实体。
    • 对象具有类定义的属性和方法,可以通过调用对象的方法来操作对象的数据。
  3. 继承(Inheritance)

    • 继承是一种机制,它允许一个类(子类)继承另一个类(父类)的属性和方法。
    • 子类可以重用父类的代码,并且可以添加自己的属性和方法。
    • 通过继承,可以实现代码的复用和扩展。
  4. 多态(Polymorphism)

    • 多态是指同一个方法在不同的对象上可以有不同的实现。
    • 通过多态,可以实现代码的灵活性和可扩展性。
    • 多态可以通过函数重载、虚函数等方式实现。
  5. 封装(Encapsulation)

    • 封装是将数据和操作数据的方法封装在一起,形成一个对象。
    • 通过封装,可以隐藏对象的内部实现细节,只暴露必要的接口给外部使用。
    • 封装可以提高代码的安全性和可维护性。

以下是一个简单的C++代码示例,展示了类、对象、继承、多态和封装的概念:

#include <iostream>

// 基类:Shape
class Shape {
public:
    // 虚函数:计算面积
    virtual double area() const {
        return 0.0;
    }

    // 虚函数:计算周长
    virtual double perimeter() const {
        return 0.0;
    }

    // 虚析构函数
    virtual ~Shape() {}
};

// 派生类:Rectangle
class Rectangle : public Shape {
private:
    double width;
    double height;

public:
    // 构造函数
    Rectangle(double w, double h) : width(w), height(h) {}

    // 重写基类的虚函数:计算面积
    double area() const override {
        return width * height;
    }

    // 重写基类的虚函数:计算周长
    double perimeter() const override {
        return 2 * (width + height);
    }
};

// 派生类:Circle
class Circle : public Shape {
private:
    double radius;

public:
    // 构造函数
    Circle(double r) : radius(r) {}

    // 重写基类的虚函数:计算面积
    double area() const override {
        return 3.14159 * radius * radius;
    }

    // 重写基类的虚函数:计算周长
    double perimeter() const override {
        return 2 * 3.14159 * radius;
    }
};

// 函数模板:计算并打印形状的面积和周长
template <typename T>
void printShapeInfo(const T& shape) {
    std::cout << "Area: " << shape.area() << std::endl;
    std::cout << "Perimeter: " << shape.perimeter() << std::endl;
}

int main() {
    // 创建Rectangle对象
    Rectangle rect(5.0, 3.0);
    // 创建Circle对象
    Circle circle(2.5);

    // 调用函数模板,打印Rectangle的面积和周长
    printShapeInfo(rect);
    // 调用函数模板,打印Circle的面积和周长
    printShapeInfo(circle);

    return 0;
}

在Linux系统中编译上述C++代码,你可以使用GCC(GNU Compiler Collection)编译器。以下是编译步骤:

  1. 保存代码:将上述代码保存为一个名为shape_example.cpp的文件。

  2. 打开终端:在Linux系统中打开一个终端窗口。

  3. 导航到代码文件所在目录:使用cd命令导航到保存shape_example.cpp文件的目录。

  4. 编译代码:在终端中输入以下命令来编译代码:

g++ -std=c++11 shape_example.cpp -o shape_example

 这个命令含义是:

  • g++:调用GCC编译器。
  • -std=c++11:指定使用C++11标准进行编译。
  • shape_example.cpp:要编译的源文件。
  • -o shape_example:指定输出的可执行文件名为shape_example

运行程序:编译成功后,在终端中输入以下命令来运行程序:

./shape_example

这个命令会执行刚刚编译生成的 shape_example可执行文件。

如果编译过程中没有错误,你应该会看到程序输出矩形和圆形的面积和周长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值