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

为何不能使用?有人说是因为,静态里没有this参数。

但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?

比如 cl ass a
{
public:
int a;

f()
{
a = 1 ; // 成员函数里没有a对应的参数,却能直接使用a

}

}

成员函数里没有a对应的参数,却能直接使用a
那为何静态成员函数里,不能直接使用成员变量this ?

慕容森
浏览 2968回答 3
3回答

犯罪嫌疑人X

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

慕无忌1623718

使用静态成员函数的目的就是使这个函数成为“类”级别的,而不是“对象级别”的,实际上相当于必须通过这个类使用的全局函数,是不属于任何对象的,如果你感觉一个静态成员函数需要处理对象,那么很可能是应该把它定义为成员函数。静态成员函数不能调用普通成员函数和使用普通成员变量。

RISEBY

静态成员不属于对象本身。this指针其实是对象指针,既然静态不是对象本身的东西,那么this指针自然也不可以用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript