您的位置:首页 > 编程语言 > C语言/C++

C++模板Template的使用,精简详解,秒懂。

2018-07-04 16:49 190 查看

    为了能够完整地描述模板的创建和具体使用,以下会有完善的测试,请大家耐心看下去,基本可以看得懂,即学即用。

// CPP面向对象.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

template <class T>
class MyClass
{
public:
MyClass(T e);
~MyClass();
void printSum(T f);
void noPara(T);
T mul = 11;
T mulSet;
T add();
void undefine();

private:
T a;
T b;
T c;
T d;
protected:

};
template<class T>
MyClass<T>::MyClass(T e):a(10), b(30), c(90), d(99)
{
this->d = 666;
cout << "Hello World!" << a << " -- " << b << " -- " << c << " -- " << d << " -- " << e << endl;
}
template<class T>
MyClass<T>::~MyClass()
{
return;
}
template<class T>
void MyClass<T>::printSum(T f)
{
cout <<  a + b + c + d + f << endl;
}
template<class T>
void MyClass<T>::noPara(T adc)
{
cout << "I am adc(" << adc << ")" << endl;
}
template<class T>
T MyClass<T>::add()
{
return ((this->a + this->b + this->c + this->d) * this->mul) * this->mulSet;;
}

template<class A, class B>
class MyClass2
{
public:
MyClass2(A intA, B charB, B *intBs);
~MyClass2();
B ch1;
B ch2[10];
private:

};

template<class A, class B>
MyClass2<A, B>::MyClass2(A intA, B intB, B *intBs) : ch1('c'), ch2("ch2")
{
cout << "A intA:" << intA << " -- " << "B intB:" << intB << "B intBs:" << intBs << " -- "
<< "ch1 = " << ch1 << " -- " << "ch2 = " << this->ch2
<< endl;
}

template<class A, class B>
MyClass2<A, B>::~MyClass2()
{
return;
}

template<class V>
class MyClass3
{
public:
MyClass3();
~MyClass3();
V test();
private:

};
template<class V>
MyClass3<V>::MyClass3()
{
}
template<class V>
MyClass3<V>::~MyClass3()
{
}

template<class V>
V MyClass3<V>::test()
{
cout << "test" << endl;
}

template<class V, class C>
V vcFoo(C c)
{
cout << "V and C = " << c << endl;
}

int main()
{

MyClass<int> mc(55);

mc.printSum(88);

mc.mulSet = 123;

cout << mc.add() / 123 << endl;

mc.noPara(99);

char NCAA[10] = "NCAA";

MyClass2<int, char> mc2(2, 'BBC', NCAA); //'BBC'取最后一个字符'C'

MyClass3<void> ss;
ss.test();

vcFoo<void>(10);

system("pause");

return 0;
}


阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: