使用类模板添加不同项目的 C++ 程序
c++server side programmingprogramming
假设我们想要创建一个可以添加两个整数、两个浮点数和两个字符串的类(字符串加法基本上是连接字符串)。首先,我们取一个数字 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),执行:
类型 := 当前类型
如果类型与"float"相同,则:
取两个操作数 e1 和 e2
创建一个名为 myfloat 的 float 类型的 AddItems 对象,其中包含项 e1
调用 myfloat.add(e2) 并显示
否则,当类型与"int"相同时,则:
取两个操作数 e1 和 e2
创建一个名为 myint 的 float 类型的 AddItems 对象,其中包含项 e1
调用myint.add(e2) 并显示
否则,当类型与"string"相同时,则:
取两个操作数 e1 和 e2
创建一个名为 mystring 的浮点型 AddItems 对象,其中包含项目 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++