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;
}
文章目录