成员函数指针

时间:2024-03-10 10:03:54编辑:奇事君

c++静态成员函数里,为何不能直接使用this指针?

静态成员函数并不是针对某个类的实例对象,而是属于整个类的,为所有的对象实例所共有。他在作用域的范围内是全局的,独立于类的对象之外的。他只对类内部的静态成员变量做操作。当实例化一个类的对象时候,里面不存在静态成员的。this指针是相当于一个类的实例的指针,this是用来操作对象实例的内容的,既然静态成员函数和变量都是独立于类的实例对象之外的,他就不能用this指针。也不能操作非静态成员。再有你要想想设计静态成员的用意在哪里,就会更加明了了


静态成员函数没有this指针,是怎么实现被对象访问的。

类的静态函数被该类所有的实例所共享,因而没有this指针,不能访问类的非静态成员,示例如下:
class cls
{
plublic:
cls(){ m_value = 0;};
virtual ~cls(){};
int m_value;
static int m_static_value; //静态成员变量
static int foo(); //静态函数
int foo2();
};
int cls::foo()
{
++cls::m_static_value; // 类的静态函数访问类的静态成员变量
}
int cls::foo2()
{
++m_value;
}
int cls:m_static_value = 0;
cls var;
var.foo2(); //调用类的非静态函数
cls::foo(); //调用类的静态成员函数
cls var1; // var1的m_static_value 此时为1,因为静态成员变量,被类cls的所有实例所共享


上一篇:依赖关系

下一篇:ros软路由