c++ 静态函数的 声明与定义
对于普通函数来说可在声明和定义的时候都加上static关键字。
对于类的函数只能在声明处加static关键字,定义处不可以加static关键字。
如果在定义处也加了static关键字就会报如下错误:
main.cpp:17:26: error: cannot declare member function 'static std::__cxx11::string A::getName()' to have static linkage [-fpermissive]
static string A::getName()
^
make: *** [Makefile:2: main.exe] Error 1
测试代码:
main.h
#include <iostream>
#include <string>
using namespace std;
//static string f();
class A
{
public:
static string getName();
};
//string A::getName()
//{
// return "A hello";
//}
main.cpp
#include <iostream>
#include "main.h"
using namespace std;
//static string f()
//{
// return "hello";
//}
//string f()
//{
// return "hello";
//}
string A::getName()
{
return "A hello";
}
int main (int argc, char *argv[]) {
//string a = f();
string a = A::getName();
cout<<a<<endl;
return 0;
}