类模板

为什么需要类模板?

类模板与函数模板的定义和使用类似,我已经进行了介绍。 有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:

作用:

1.类模板用于实现类所需数据的类型参数化

2.类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的元素类型的影响

一、单个类模板语法

//类的类型参数化 抽象的类
//单个类模板
template<typename T>
class A 
{
public:
	A(T t)
	{
		this->t = t;
	}

	T &getT()
	{
		return t;
	}
protected:
public:
	T t;
};
void main()
{
   //模板了中如果使用了构造函数,则遵守以前的类的构造函数的调用规则
	A<int>  a(100); 
	a.getT();
	printAA(a);
	return ;
}

  

二、继承中的类模板语法

结论: 子类从模板类继承的时候,需要让编译器知道 父类的数据类型具体是什么(数据类型的本质:固定大小内存块的别名) A<int> 。

class B : public A<int>
{
public:
	B(int i) : A<int>(i)
	{

	}
	void printB()
	{
		cout<<"A:"<<t<<endl;
	}
protected:
private:
};

//模板与上继承
//怎么样从基类继承  
//若基类只有一个带参数的构造函数,子类是如何启动父类的构造函数
void pintBB(B &b)
{
	b.printB();
}
void printAA(A<int> &a)  //类模板做函数参数 
{
	 //
	a.getT();
}

void main()
{
	A<int>  a(100); //模板了中如果使用了构造函数,则遵守以前的类的构造函数的调用规则 
	a.getT();
	printAA(a);

	B b(10);
	b.printB();


	cout<<"hello..."<<endl;
	system("pause");
	return ;
}

  

原文地址:https://www.cnblogs.com/gd-luojialin/p/9750216.html