静态成员函数和全局函数有什么不同?

时间:2017-09-15 16:52:09

标签: c++

静态成员函数和全局函数有什么不同?

void globalFunc()
{
}

class Test
{
  public:
    //In grammar side, object's not own this function
    static void staticFunc(); 
};

静态成员函数是全局函数,但它可以用含义进行分类 并限制访问范围。

但我无法理解为什么静态成员函数的调用约定 是[这个电话]。

我理解普通成员函数必须是[this call],因为它必须需要调用者对象的地址,但为什么静态成员函数有这个调用约定?我认为它不需要调用者的地址,因为它不是对象的 功能。 静态成员函数和全局函数之间有什么区别吗? (不在语法方面但也偏低)

1 个答案:

答案 0 :(得分:6)

静态类函数可以

  • 访问类中的私有和受保护静态数据成员。
  • 访问私有和受保护的静态函数。
  • 如果静态函数具有类的实例,则访问类中的私有和受保护的每个实例数据成员。
  • 如果静态函数具有类的实例,则访问私有和受保护的每个实例函数
  • 基类中同名的影子函数。
  • 访问基类中受保护的数据和函数。

全球非朋友功能无法做到这一点。