📜  有关C++中静态成员函数的一些有趣事实

📅  最后修改于: 2021-05-30 05:25:06             🧑  作者: Mango

1)静态成员函数没有此指针。
例如,以下程序在编译时失败,错误为“`this’对于静态成员函数不可用”

CPP
#include
class Test {     
   static Test * fun() {
     return this; // compiler error
   }
};
  
int main()
{
   getchar();
   return 0;
}


CPP
#include
class Test {
   static void fun() {}
   void fun() {} // compiler error
};
  
int main()
{
   getchar();
   return 0;
}


CPP
#include
class Test {     
   static void fun() const { // compiler error
     return;
   }
};
  
int main()
{
   getchar();
   return 0;
}


2)静态成员函数不能是虚拟的(请参阅此G-Fact)
3)如果它们中的任何一个是静态成员函数声明具有相同的名称和名称参数类型列表成员函数声明不能被重载。
例如,以下程序在编译时失败,并显示错误“ ‘void Test :: fun()’和’static void Test :: fun()’无法重载

CPP

#include
class Test {
   static void fun() {}
   void fun() {} // compiler error
};
  
int main()
{
   getchar();
   return 0;
}

4)不能将静态成员函数声明为constvolatileconst volatile
例如,以下程序编译失败,并显示错误“静态成员函数`static void Test :: fun()’不能具有’const’方法限定符”

CPP

#include
class Test {     
   static void fun() const { // compiler error
     return;
   }
};
  
int main()
{
   getchar();
   return 0;
}
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”