- 静态数据成员
类中数据成员的声明前加上static为该类的静态成员。 类的静态数据成员在类实现文件中初始化,否则会出现未定义错误,且初始化时无需再用static关键字修饰,无论类被实例化多少个,静态数据成员都只有一份拷贝,为该类型的所有对象所共享。
template<typename T>
class singleton{
public:
template <typename... Args>
static T* Instance(Args &&... args){
if(pInstance == nullptr){
pInstance = new T(std::forward<Args>(args)...);
}
return pInstance;
}
static T* getInstance(){
if(pInstance){
return pInstance;
}
return nullptr;
}
void destructInstance(){
delete pInstance;
pInstance = nullptr;
}
private:
static T* pInstance;
};
template <class T>
T *singleton<T>::pInstance = nullptr;
- 静态成员函数
类的静态成员函数属于整个类而非类对象,所以没有this指针,这导致了他只可以访问类的静态数据和静态成员函数。 静态函数在类定义体外不能加static关键字修饰,因为成员函数本是类作用域,而在类外用static声明会将其作用扩大为文件作用域,是不合理的
|