静态成员函数如何调用静态私有数据成员?需要什么样的内部转型?

时间:2014-12-14 18:33:04

标签: c++ class null this static-functions

想象一下,我们有以下课程:

class A
{
private:
static int m_a;
public:
A() {}
static int get_sum(int b);
};

int A::m_a = 5;

int A::get_sum(int b)
{
return m_a + b;
}

int main() {
    // your code goes here
    A a;
    int c = a.get_sum(10);
    cout << "C=: " << c << endl;
    return 0;
}

在上面的代码中,我们有一个类,它包含一个私有的静态成员变量,它调用我们的公共静态成员函数get_sum()。现在的问题是:没有“this”指针的函数如何访问类成员变量m_a?在利普曼的书中,我读过:

  

(( Point3d* ) 0 )->object_count();

     

其中object_count()只会返回_object_count   静态数据成员。这个成语是如何演变的?   ..............................
  ..............................
  //呼叫的内部转换

     

object_count(( Point3d* ) 0 );

     

语言解决方案是引入静态成员函数   在官方cfront版本2.0中。的主要特征   一个静态成员函数是它没有this指针。

我不明白我们如何将0转换为类类型对象?

1 个答案:

答案 0 :(得分:0)

静态成员函数没有此指针,静态数据成员是特定于类的,而不是特定于对象的。因此,静态成员函数可以访问静态成员变量。