C++: 静态成员函数不能访问非静态成员的道理
2010-04-18 11:47
330 查看
关键的一点在于:静态成员函数只和类型有关,而与对象无关!
这样就可以看出静态成员函数和非静态成员函数的根本区别就在于:静态成员函数没有this指针,因为它没有对象,而非静态成员函数有一个指向当前对象的指针this。
举例:
class A
{
public:
void notStaticFunc(int a);
static void staticFunc(int a);
}
void f(A& s)
{
s.notStaticFunc(100); //编译时按照A::notStaticFunc(&s,100)进行,把s的地址作为第一个参数。
s.staticFunc(100); //我想最好写成A::staticFunc(100); 以便体现对象无关。
}
这样就可以看出静态成员函数和非静态成员函数的根本区别就在于:静态成员函数没有this指针,因为它没有对象,而非静态成员函数有一个指向当前对象的指针this。
举例:
class A
{
public:
void notStaticFunc(int a);
static void staticFunc(int a);
}
void f(A& s)
{
s.notStaticFunc(100); //编译时按照A::notStaticFunc(&s,100)进行,把s的地址作为第一个参数。
s.staticFunc(100); //我想最好写成A::staticFunc(100); 以便体现对象无关。
}
相关文章推荐
- C++: 静态成员函数不能访问非静态成员的道理
- 为什么C++静态成员函数不能访问非静态成员变量、不能调用非静态成员函数?(面试常考)
- C++中的静态成员函数不能访问非静态成员
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)
- 为什么c++中,有时可以用类名直接访问非静态成员函数?
- 静态成员函数 不能访问非静态成员函数
- C++静态成员函数访问非静态成员
- C++的静态成员函数访问非静态成员变量
- C++数据结构学习(一) 静态 非静态 成员及函数的访问
- C++中静态成员函数访问非静态成员变量
- C++中静态成员函数访问成员变量问题
- C++静态成员函数访问非静态成员的几种方法
- C++里的静态成员函数为何不能用const?
- c++中静态成员函数访问非静态成员变量
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)(转)
- c++静态成员函数为什么不能为虚函数?
- C++静态成员函数访问非静态成员的几种方法
- C++中静态成员函数访问成员变量问题
- C++静态成员函数访问非静态成员的几种方法
- C++中静态成员函数访问非静态成员变量