而且头文件里面有方法的 实现,这个方法还 必须写成static,原因是,如果有多 个源文件include这个头文件的话,那么就会报 重定义的错误,加上static,就会只保留一份,不会报错 了(当然如果 头文件里的实现方法只给一个源文件 用,不加static也不会有问题)
我就说下常用情况吧
类中全部是静态方法,一般这个类的作用也就类似于思维上的一个命名空间了,一般工具类会使用这种方法,比如数学算法
举例:
CMath::translate()
CMath::move(x, y),
CMath::isEqual(x, y)
使用静态变量做单例,使用静态函数创建和释放单例,这样在逻辑上,这个单例属于一个类,而这个类是一个单例,在程序中仅存一份,也勉强算的上符合“谁创建谁释放”的原则了吧
举例: static CInstance CInstance::m_myInstance = NULL
//创建单例
CInstance CInstance::getInstance(someVal)//声明处也是静态
{
if(m_myInstance == nullptr)
{
m_myInstance = new CInstance(someVal)
}
return m_myInstance
}
//释放单例
void CInstance::destroyInstance(someVal)//声明静态
{
if(m_myInstance != nullptr)
{
delete m_myInstance
}
m_myInstance = nullptr
}
3.第三种情况呢,就是在一个类中,需要处理某块逻辑,于是把这块逻辑封成一个函数,但是发现这块逻辑与类中的成员变量毫无关系,而且这块逻辑可能又会在别的类中被调用,也类似于算法或者功能类的东西,就可以把这个函数提成静态函数,供其它类使用。
简单回忆了一下,大体就见过这么几种情形吧。
上面代码未进行编译,大体就是表达意思的伪代码,领会即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)