在c++中使用模板的目的是:减少代码量,相同功能的代码只写一份,根据传入不同的参数,实现相同的功能。
优点:减少了程序开发者的工作 量,只写一份相同功能的代码
缺点:编译器在展开时,每传入一个参数就会展开一个实例,编译器代替了程序员的一部分工作,但是模板更复杂,增加了难度。
其次:在编译时,模板本身是不参加,当做了注释,只有在传入参数时实例化时才检查代码
template <typename T>
class Singleton {
public:
static T& getInstance() {
static T instance;
return instance;
}
Singleton(const Singleton& src) = delete;
Singleton& operator=(const Singleton& src) = delete;
private:
Singleton() {}
~Singleton() {}
};
上面这段代码是一个单例模式,只在C++11下是线程安全的。
在编译时,如果我传入T的类型是int,编译器会创建一个实例;如果我再传入float类型数据时,会创建另外一个实例.。。。。。。。。。。。