使用类模板添加不同项目的C++程序


假设我们想创建一个可以添加两个整数、两个浮点数和两个字符串的类(字符串相加实际上是字符串连接)。首先,我们输入一个数字n,表示有n个不同的操作。在每个操作中,第一个项目是类型[int, float, string],第二个和第三个是两个操作数。因此,每一行将包含三个元素。我们必须读取它们并执行上述操作。

因此,如果输入如下所示:

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

则输出将为:

12
15
14.88
helloworld
loveC++

为了解决这个问题,我们将遵循以下步骤:

  • 定义一个名为AddItems的类,使用类模板。它有两个函数add()和concatenate()。add()将添加整数和浮点数,而concatenate()将连接字符串。

  • 从主方法中执行以下操作:

  • 初始化 i := 0,当 i < n 时,更新(i 增加 1),执行:

    • type := 当前类型

    • 如果type与"float"相同,则:

      • 获取两个操作数e1和e2

      • 创建一个名为myfloat的AddItems对象,类型为float,项目为e1

      • 调用myfloat.add(e2)并显示结果

    • 否则,如果type与"int"相同,则:

      • 获取两个操作数e1和e2

      • 创建一个名为myint的AddItems对象,类型为int,项目为e1

      • 调用myint.add(e2)并显示结果

    • 否则,如果type与"string"相同,则:

      • 获取两个操作数e1和e2

      • 创建一个名为mystring的AddItems对象,类型为string,项目为e1

      • 调用mystring.concatenate(e2)并显示结果

示例

让我们看看下面的实现,以便更好地理解:

#include <iostream>
using namespace std;
template <class T>
class AddItems {
    T element;
  public:
    AddItems (T arg) {
        element=arg;
    }
    T add (T e2) {
        return element+e2;
    }
    T concatenate (T e2) {
        return element+e2;
    }
};
int main(){
    int n,i;
    cin >> n;
    for(i=0;i<n;i++) {
        string type;
        cin >> type;
        if(type=="float") {
            float e1,e2;
            cin >> e1 >> e2;
            AddItems<float> myfloat (e1);
            cout << myfloat.add(e2) << endl;
        }
        else if(type == "int") {
            int e1, e2;
            cin >> e1 >> e2;
            AddItems<int> myint (e1);
            cout << myint.add(e2) << endl;
        }
        else if(type == "string") {
            string e1, e2;
            cin >> e1 >> e2;
            AddItems<string> mystring (e1);
            cout << mystring.concatenate(e2) << endl;
        }
    }
}

输入

5
int 5 7
int 6 9
float 5.25 9.63
string hello world
string love C++

输出

12
15
14.88
helloworld
loveC++

更新于:2021年10月7日

624 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告
© . All rights reserved.