1. 程式人生 > >新手學C/C++:C++的類靜態成員函式可以訪問類中的私有成員嗎?為什麼?

新手學C/C++:C++的類靜態成員函式可以訪問類中的私有成員嗎?為什麼?

類的所有成員函式都可以訪問本類的私有成員,但是靜態成員函式沒有this指標,因此通過 該類的物件作為函式引數,可以顯示訪問該類的私有成員。

測試程式如下:

#include <stdio.h>

 

class Demo

{

private:

    int i;

public:

    int getI();

    static void StaticSetI(Demo& d, int v);

};

 

int Demo::getI()

{

    return i;

}

 

void Demo::StaticSetI(Demo& d, int v)

{

    d.i = v;

}

int main()

{

    Demo d;

    

//d.i = 11;

    Demo::StaticSetI(d, 10);

    

    printf("d.i = %d\n", d.getI());

    

    return 0;

}