使用类模板添加不同项目的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++
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP