为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容森 2019-02-14 15:11:48
为何不能使用?有人说是因为,静态里没有this参数。但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?比如 cl ass a{public:int a;f(){a = 1 ; // 成员函数里没有a对应的参数,却能直接使用a}}成员函数里没有a对应的参数,却能直接使用a那为何静态成员函数里,不能直接使用成员变量this ?
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-25
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-25
?
RISEBY

TA贡献1856条经验 获得超5个赞

静态成员不属于对象本身。
this指针其实是对象指针,既然静态不是对象本身的东西,那么this指针自然也不可以用。

查看完整回答
反对 回复 2019-03-25
  • 3 回答
  • 0 关注
  • 2967 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信