首页 > 其他 > 详细

类模版的注意事项

时间:2015-07-03 14:11:24      阅读:130      评论:0      收藏:0      [点我收藏+]

demo 1

#include <iostream>
#include <cstdio>
using namespace std;

// 模板类
template <typename T>
class A
{
public:
	A(T a = 0) {
		this->a = a;
	}
	
	void printA()
	{
		cout << "a: " << a << endl;
	}
private:
	T a;
};

// 从模板类


// C++编译器要求具体的类,所以要写成A<int> &a,千万别忘了<int>
void useA(A<int> &a)
{
	a.printA();
}

int main()
{
	// 模板类(本身就是类型化的)=>具体的类=>定义具体的变量
	A<int> a1(11), a2(20), a3(30); // 模版是抽象的 => 需要给出具体类型
	//a1.printA();


	return 0;
}

demo 2

#include <iostream>
#include <cstdio>
using namespace std;

// 模板类
template <typename T>
class A
{
public:
	A(T a = 0) {
		this->a = a;
	}
	
	void printA()
	{
		cout << "a: " << a << endl;
	}
protected:
	T a;
};

// 从模板类派生的普通类
// 模板类派生时,需要具体化模板类,C++编译器需要知道,父类的数据类型是什么样子的
// 要知道父类所占的内存大小是多少,只有数据类型固定下来,才知道如何分配内存
class B : public A<int>
{
public:
	B(int a = 10, int b = 20) : A<int>(a)
	{
		this->b = b;
	}

	void printB()
	{
		cout << "a: " << a << "\nb: " << b << endl;
	}

private:
	int b;
};

// 从模板类派生模板类
template <typename T>
class C : public A < T >
{
public:
	C(T c, T a) : A<T>(a)
	{
		this->c = c;
	}
	void printC()
	{
		cout << "a: " << a << "\nc: " << c << endl;
	}
private:
	T c;
};

int main()
{
	C<int> c1(10, 20);
	c1.printC();
	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

类模版的注意事项

原文:http://blog.csdn.net/zyq522376829/article/details/46738257

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!