#include <iostream>
using namespace std;
// 类模板 类型参数化
template<typename T>
class ClassTemplateDemo {
public:
ClassTemplateDemo() {}
ClassTemplateDemo(T i) {
this->i = i;
}
~ClassTemplateDemo() {}
public:
T getI() {
return i;
}
void setI(T i) {
this->i = i;
}
protected:
private:
T i;
};
void test(ClassTemplateDemo<int>* pClassTemplateDemo) {
cout << "i: " << pClassTemplateDemo->getI() << endl;
}
void test(ClassTemplateDemo<char>* pClassTemplateDemo) {
cout << "i: " << pClassTemplateDemo->getI() << endl;
}
void main01() {
//ClassTemplateDemo obj; // error 错误 C2955 “ClassTemplateDemo” : 使用 类 模板 需要 模板 参数列表
ClassTemplateDemo<int> obj1;
ClassTemplateDemo<char> obj2;
obj1.setI(100);
cout << "i: " << obj1.getI() << endl;
obj1.setI(200);
test(&obj1);
system("pause");
}
template<typename T>
class ChildForClassTemplateDemo : public ClassTemplateDemo<T> {
public:
ChildForClassTemplateDemo(T i, T c) : ClassTemplateDemo<T>(i){
this->c = c;
}
protected:
private:
int c;
};
template<typename T>
void test(ClassTemplateDemo<T>* pBase) {
cout << "test<> i: " << pBase->getI() << endl;
}
void main() {
ChildForClassTemplateDemo<int> obj1(1, 2);
ChildForClassTemplateDemo<char> obj2('i', 'j');
test(&obj1);
test<>(&obj1);
test<>(&obj2);
system("pause");
}
C++类模板基础Demo
最新推荐文章于 2023-07-19 18:17:34 发布