C++ 加号运算符重载

C++C++Beginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习如何在 C++ 编程语言中演示 + 运算符重载的概念。运算符重载是 C++ 中的一项特性,它允许单个运算符或符号在不同的上下文中具有不同的含义。在本实验中,我们将展示如何使用 + 运算符来相加两个长方体(Cuboid)对象。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/FunctionsGroup -.-> cpp/function_overloading("Function Overloading") cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/operators -.-> lab-96153{{"C++ 加号运算符重载"}} cpp/function_overloading -.-> lab-96153{{"C++ 加号运算符重载"}} cpp/classes_objects -.-> lab-96153{{"C++ 加号运算符重载"}} cpp/class_methods -.-> lab-96153{{"C++ 加号运算符重载"}} cpp/files -.-> lab-96153{{"C++ 加号运算符重载"}} cpp/code_formatting -.-> lab-96153{{"C++ 加号运算符重载"}} end

创建一个新的 C++ 文件

~/project 目录下创建一个名为 main.cpp 的 C++ 文件。

cd ~/project
touch main.cpp

编写代码演示 + 运算符重载

将以下代码添加到 main.cpp 中,创建一个名为 Cuboid 的类,用于表示三维长方体:

#include <iostream>

using namespace std;

// 定义 Cuboid 类以演示 C++ 中加号运算符重载的概念
class Cuboid {
    // 将类的成员变量声明为 public,以便从类外部访问
    public:
        double length; // 长方体的长度
        double breadth; // 长方体的宽度
        double height; // 长方体的高度

        public:
        double getVolume(void) {
            return length * breadth * height;
        }
        void setLength(double l) {
            length = l;
        }

        void setBreadth(double b) {
            breadth = b;
        }

        void setHeight(double h) {
            height = h;
        }

        // 重载 + 运算符以实现两个 Cuboid 对象的相加
        Cuboid operator + (const Cuboid & c) {
            Cuboid cuboid;
            cuboid.length = this -> length + c.length;
            cuboid.breadth = this -> breadth + c.breadth;
            cuboid.height = this -> height + c.height;
            return cuboid;
        }
};

定义 main 函数

将以下代码添加到 main.cpp 中,实现 main 函数。该函数创建三个 Cuboid 对象,设置它们的尺寸,计算它们的体积,将其中两个对象相加,并打印结果长方体对象的尺寸和体积:

// 定义 main 方法以访问类的成员
int main() {

    cout << "\n\nWelcome to LabEx :-)\n\n\n";
    cout << " =====  演示 C++ 中加号运算符重载的程序  ===== \n\n";

    // 声明类对象以访问类的成员
    Cuboid c1;
    Cuboid c2;
    Cuboid c3;

    // 用于存储长方体的体积
    double volume = 0.0;

    // 设置第一个长方体对象 c1 的长度、宽度和高度
    c1.setLength(3.0);
    c1.setBreadth(4.0);
    c1.setHeight(5.0);

    // 设置第二个长方体对象 c2 的长度、宽度和高度
    c2.setLength(2.0);
    c2.setBreadth(5.0);
    c2.setHeight(8.0);

    // 计算第一个长方体 c1 的体积
    cout << "调用 getVolume() 方法以计算长方体 c1 的体积\n";
    volume = c1.getVolume();
    cout << "长方体 c1 的体积是 : " << volume << "\n\n\n";

    // 计算第二个长方体 c2 的体积
    cout << "调用 getVolume() 方法以计算长方体 c2 的体积\n";
    volume = c2.getVolume();
    cout << "长方体 c2 的体积是 : " << volume << "\n\n\n";

    // 将两个长方体对象 c1 和 c2 相加,形成第三个对象 c3
    c3 = c1 + c2;

    // 打印第三个长方体 c3 的尺寸
    cout << "长方体 c3 的长度是 : " << c3.length << endl;
    cout << "长方体 c3 的宽度是 : " << c3.breadth << endl;
    cout << "长方体 c3 的高度是 : " << c3.height << endl;

    // 计算第三个长方体 c3 的体积
    cout << "\n\n调用 getVolume() 方法以计算长方体 c3 的体积\n";
    volume = c3.getVolume();
    cout << "长方体 c3 的体积是 : " << volume << endl;
    cout << "\n\n\n";

    return 0;
}

编译并运行代码

使用以下命令编译并运行代码:

g++ main.cpp -o main && ./main

你将看到以下输出:

Welcome to LabEx :-)


 =====  演示 C++ 中加号运算符重载的程序  =====

调用 getVolume() 方法以计算长方体 c1 的体积
长方体 c1 的体积是 : 60

总结

在本实验中,你学习了如何在 C++ 编程语言中演示 + 运算符重载的概念。运算符重载是 C++ 中一项强大且实用的特性,它允许你在不同的上下文中使用具有不同含义的运算符。通过重载 + 运算符,你可以将两个长方体(Cuboid)对象相加。