浅显易懂的单模版类——————(与函数模版的区别)

  • 模版类是抽象的,必须进行具体类型,而函数模版则不一定

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");
}

  

 

posted @   小陈同学啦  阅读(238)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示