By
takethat
总阅读次
类指针
- 指针对象为NULL,为什么仍然可以调用成员函数
参考文章1_对象指针为NULL,为什么还是可以调用成员函数
参考文章2——值为NULL的对象指针
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #include<iostream> #include<string.h> using namespace std; class A { public: static void f1(){ cout<<"f1"<<endl; } void f2(){ cout<<"f2"<<endl; } void f3(){ cout<<num<<endl; } virtual void f4() {cout<<"f4"<<endl; } public: int num; }; int main(int argc,char* argv[]) { A* pa = NULL; pa->f1(); pa->f2(); pa->f3(); pa->f4(); return 0;
}
|
类的成员函数并不与具体对象绑定,所有的对象共用同一份成员函数体,当程序被编译后,成员函数的地址即已确定,这份共有的成员函数体之所以能够把不同对象的数据区分开来,靠的是隐式传递给成员函数的this指针,成员函数中对成员变量的访问都是转化成”this->数据成员”的方式。因此,从这一角度说,成员函数与普通函数一样,只是多了一个隐式参数,即指向对象的this指针。而类的静态成员函数只能访问静态成员变量,不能访问非静态成员变量,所以静态成员函数不需要指向对象的this指针作为隐式参数。
指针不是基础类型
指针是