模板高级运用

本文探讨了C++中的模板高级用法,包括模板与继承结合实现多态、typedef关键字的使用、函数重载、模板与单例模式的结合、宏与模板的结合。此外,还介绍了特化和泛化的概念以及工厂设计模式。最后,文章讲解了代理(委托)的概念和函数指针,并深入讨论了模板元编程,展示了如何利用模板元编程去除const以及判断数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结合着继承,这边加了个模板。模板是支持虚函数,指出多态的。跟普通虚继承调用没有什么太多的差别,多了一步前面补上一个类型然后和正常一样,创建基类指针指向派生类的对象或者新开辟的空间。

template<typename T>
class A {
public:
	virtual void  test() {
		cout << "1";
	}
	T *p;
};
template<typename T>
class B :public A<int>
{
public:
	virtual void  test() {
		cout << "2";
	}
	T *p;

};
int main() {

	A<int>*aaa = new B<int>();
	aaa->test();
}

这边先学习一下这个关键字typedef,这个关键字是起别名的作用。写法是typedf 变量名 别名

下面这个是对结构体起别名的两种方法--

struct a {
	int name;
	string age;
};
typedef a ok;

typedef struct b {
	int aname;
	string sage;
}ls;

同时 模板也是支持函数重载的

----

将宏和模板结合到一起

#define hello(name,code,Fcc,...)\
template <typename T>\
class F##name{\
public:\
  void test(){\
   printf(Fcc,__VA_ARGS__);\
   code;\
}\
private: T*a;\
};

hello(s, cout << "ok" << endl,"%s","hello ccc") 
int main() {
    Fs<int> a;
	a.test();
         
}

--------------

单列

初级单列的设计模式

class single {
public:
	static  single *get() {
		if (ins == nullptr) {
			ins = new single();
		}
	}
private:
	static single *ins;
	single() {};
	~single() {cout<<"ok";};
	single(const single &clone) {};
	single &operator=(const single);
};

single *single::ins = nullptr;

就是这么写会出现一个问题,就是无法调用析构函数来delete产生内存泄漏。

模板配合单列来使用

//头文件里
template<typename T>
class FThread {
public:
	static T*get() {
		if (! instance) {
			ins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值