"+"运算符重载(C++)

'+' Operator overloading in C++

本文关键字:C++ 重载 运算符      更新时间:2023-10-16

我刚开始学习运算符重载,只是在玩代码来学习它是如何工作的。所以,我写了一个代码,添加了两个字符。例如:"#"+"%"="H",因为添加了ASCII值。

这是我的代码:

#include <iostream>
using namespace std;
class Strings {
//everything is public
public:
    char str;
    //empty constructor
    Strings();
    Strings(char);
    //operator takes in an object of Strings
    Strings operator+(Strings);
};
Strings::Strings()
{}
//constructor
Strings::Strings(char a) {
    str = a;
}
//aso is "another string object"
//makes new empty object "brandNew"
//brandNew is the two characters added together
//returns object brandNew
Strings Strings::operator+(Strings aso) {
    Strings brandNew;
    brandNew.str = str + aso.str;
    return brandNew;
}
int main() {
    Strings a('#');
    Strings b('%');
    Strings c;
    //now, we can use + operator to add characters
    c = a + b;
    cout << c.str << endl;
    return 0;
}

如果我想添加两个字符串呢?如果我输入

Strings a("###");
Strings b("%%%");

我希望输出是

HHH

如何修改代码以添加这两个字符串?我首先将所有char类型声明更改为字符串。我想我必须在运算符函数中创建一个for循环,以便在添加两个输入的同时迭代两个输入中的每个字符。但是,我对它的语法感到困惑,也对如何实现它感到困惑。如有任何帮助和解释,我们将不胜感激!

我将为您提供一些声明类的帮助。

class Strings {
private:
    char* str;
    unsigned int length;
    unsigned int size;
public:
    //constructor
    Strings();
    ~Strings();
    Strings(const char*);
    Strings(const Strings&);
    //operator
    Strings operator+(const Strings&);
    Strings operator+(const char*);
    Strings operator=(const Strings&);
    Strings operator=(const char*);
    Strings operator+=(const Strings&);
    Strings operator+=(const char*);
    ///Accessors
    const char* GetStr()const;
    unsigned int GetLength()const;
    unsigned int GetSize()const;
};