浅显易懂的单模版类——————(与函数模版的区别)
- 模版类是抽象的,必须进行具体类型,而函数模版则不一定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include<iostream> #include<string> using namespace std; template < typename T> //定义模版不能加分号 class A { public : A(T a) { this ->a = a; } T &get() { return a; } private : T a; }; int main() { A< int > a1(10); // 这里必须写上<>里面的内容! cout << a1.get() << endl; A< char > a2( 'l' ); cout << a2.get() << endl; A<string > a3( "love" ); string temp=a3.get() ; cout << temp << endl; system ( "pause" ); } |
- 函数模版不允许自动类型转换,必须严格按照类型匹配----这里的意思是如果模版类要求两个参数的类型一致,则调用函数必须符合这个要求。
- 普通函数则可以进行自动类型的转化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include<iostream> using namespace std; template < typename T> void Staff(T a, T b) { cout << "a= " << a << " b = " << b << endl; cout << "我只是一个普通的函数模版、\n" ; } void Staff( int a, char b) { cout << "a= " << a << " b = " << b << endl; cout << "我只是一个普通的函数\n" ; } int main() { int x = 101; char y = 'a' ; int z = 100; Staff(x, y); //调用的普通函数 Staff(y, x); 调用的普通函数,普通函数可以自动类型转化 Staff(x, x); 调用的函数模版 函数模版不可以自动类型的转化 system ( "pause" ); } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步