http://blog.csdn.net/dwb1015/article/details/32933349
对于一个类A,对于这个定义((A*)0)或者 A *p = NULL 都可以调用类中的那些成员函数。
第一种情况:非静态成员函数没有使用类的非静态数据成员,调用的其他非静态成员函数也不能使用类的非静态数据成员
[cpp]
view plain
copy
print?
#include <iostream>
using namespace std;
class A
{
public:
void fun1()
{
cout<<"fun1"<<endl;
fun2(); //如果fun2函数内部调用了数据成员a,则会调用失败
}
void fun2()
{
cout<<"fun2"<<endl;
//a = 1;
}
private:
int a;
int b;
};
int main()
{
A *p = NULL;
p->fun1();
}
第二种情况:非静态成员调用类的静态数据成员。
[cpp]
view plain
copy
print?
#include <iostream>
using namespace std;
class A
{
public:
void fun1()
{
cout<<"fun1"<<endl;
a = 3;
cout<<"a = "<<a<<endl;
}
private:
static int a;
int b;
};
int A::a = 0;
int main()
{
A *p = NULL;
p->fun1();
}
第三种情况:类的静态成员函数
[cpp]
view plain
copy
print?
- #include <iostream> 2. 3. using namespace std; 4. 5. class A 6. { 7. public: 8. static void fun1() 9. { 10. cout<<"fun1"<<endl; 11. a = 3; 12. cout<<"a = "<<a<<endl; 13. } 14. 15. private: 16. static int a; 17. int b; 18. }; 19. 20. int A::a = 0; 21. 22. 23. int main() 24. { 25. A *p = NULL; 26. p->fun1(); 27. }
版权归原作者 penghuster 所有, 如有侵权,请联系我们删除。