~~~
#include <iostream>
using namespace std;
class A{
public:
void a(){
cout << "func_a" << endl;
}
};
int main(){
A * p = NULL;
p -> a();
return 0;
}
~~~
該程序輸出func_a,試分析其背后的原理
這主要涉及的是C++的內存模型問題,其實就是C++的抽象機制
C++對象雖然封裝了成員函數、成員變量(屬性),但成員函數和成員變量的處理方法是完全不同的,成員函數是整個類公有的,而成員數據才是一個對象真正私有的。只需要一個表示該類型的指針就可以直接訪問public成員函數,不管該指針是否是野指針。而成員數據必須是一個有效的地址才可以訪問。因為對每個對象建立一個一模一樣的函數是完全沒必要的,而每個對象的數據才會是不同的。