MOOC清华《面向对象程序设计》第4章:类模板的特化实验

来源:互联网 发布:net程序员是干嘛的 编辑:程序博客网 时间:2024/06/07 02:21
#include <iostream>#include <cstring>#include <string>using namespace std;template <typename T>class Sum{T a, b;public:Sum(T op1, T op2): a(op1), b(op2){}T DoIt() {return a + b;}};template<>class Sum<char*>{char *str1, *str2;public:Sum(char* s1, char* s2): str1(s1), str2(s2){}char* DoIt(){char* tmp = new char[strlen(str1) + strlen(str2) + 1];strcpy(tmp, str1);strcat(tmp, str2);return tmp;}};int main(){Sum<int> obj1(3, 4);cout << obj1.DoIt() << endl;char *s1 = "Hello, ", *s2 = "THU";Sum<char*> obj2(s1, s2);cout << obj2.DoIt() << endl;return 0;}

在调试这个程序的过程中,我发现一味地把char*换成string并不可行,毕竟char*是指针、是地址,而string是一个串。这也许就是C++为什么是提倡不用,而不是彻底禁止char*的原因吧。一样会有“建议弃用char*”的两行警告,但是没有编译错误。

阅读全文
0 0
原创粉丝点击