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

为何不能使用?有人说是因为,静态里没有this参数。但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?比如classa{public:inta;f(){... 为何不能使用?有人说是因为,静态里没有this参数。

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

比如 cl ass a
{
public:
int a;

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

}

}

成员函数里没有a对应的参数,却能直接使用a
那为何静态成员函数里,不能直接使用成员变量this ?
展开
 我来答
jmy99527
推荐于2018-02-28
知道答主
回答量:6
采纳率:100%
帮助的人:8520
展开全部
静态成员函数并不是针对某个类的实例对象,而是属于整个类的,为所有的对象实例所共有。他在作用域的范围内是全局的,独立于类的对象之外的。他只对类内部的静态成员变量做操作。当实例化一个类的对象时候,里面不存在静态成员的。this指针是相当于一个类的实例的指针,this是用来操作对象实例的内容的,既然静态成员函数和变量都是独立于类的实例对象之外的,他就不能用this指针。也不能操作非静态成员。再有你要想想设计静态成员的用意在哪里,就会更加明了了
jackwind1987
2013-11-20 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:495万
展开全部
使用静态成员函数的目的就是使这个函数成为“类”级别的,而不是“对象级别”的,实际上相当于必须通过这个类使用的全局函数,是不属于任何对象的,如果你感觉一个静态成员函数需要处理对象,那么很可能是应该把它定义为成员函数。静态成员函数不能调用普通成员函数和使用普通成员变量。
更多追问追答
追问
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答
我最后一句话不是这个意思么。。。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悠洛理变丶14
2019-05-19
知道答主
回答量:1
采纳率:0%
帮助的人:747
展开全部
static函数属于类不属于对象(对象里不分配内存),this是对象的指针(指向的是对象分配的内存,所以this访问不到static函数)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兜里有两块糖
2013-11-20 · TA获得超过522个赞
知道小有建树答主
回答量:585
采纳率:100%
帮助的人:505万
展开全部
静态成员不属于对象本身。
this指针其实是对象指针,既然静态不是对象本身的东西,那么this指针自然也不可以用。
追问
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答
不能对非静态成员操作

你说的书上的例子,可以粘一下。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d88c23f46
2013-11-20 · TA获得超过245个赞
知道小有建树答主
回答量:397
采纳率:45%
帮助的人:193万
展开全部
你这里没有设置成静态函数啊,在F前面加个STATIC,你看看还能运行不。
追问
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答
是的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式