c++静态成员函数里,为何不能直接使用this指针?
为何不能使用?有人说是因为,静态里没有this参数。但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?比如classa{public:inta;f(){...
为何不能使用?有人说是因为,静态里没有this参数。
但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?
比如 cl ass a
{
public:
int a;
f()
{
a = 1 ; // 成员函数里没有a对应的参数,却能直接使用a
}
}
成员函数里没有a对应的参数,却能直接使用a
那为何静态成员函数里,不能直接使用成员变量this ? 展开
但是,成员函数里没有成员变量的参数,却能直接使用成员变量,这是为何?
比如 cl ass a
{
public:
int a;
f()
{
a = 1 ; // 成员函数里没有a对应的参数,却能直接使用a
}
}
成员函数里没有a对应的参数,却能直接使用a
那为何静态成员函数里,不能直接使用成员变量this ? 展开
5个回答
展开全部
使用静态成员函数的目的就是使这个函数成为“类”级别的,而不是“对象级别”的,实际上相当于必须通过这个类使用的全局函数,是不属于任何对象的,如果你感觉一个静态成员函数需要处理对象,那么很可能是应该把它定义为成员函数。静态成员函数不能调用普通成员函数和使用普通成员变量。
更多追问追答
追问
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答
我最后一句话不是这个意思么。。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
static函数属于类不属于对象(对象里不分配内存),this是对象的指针(指向的是对象分配的内存,所以this访问不到static函数)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态成员不属于对象本身。
this指针其实是对象指针,既然静态不是对象本身的东西,那么this指针自然也不可以用。
this指针其实是对象指针,既然静态不是对象本身的东西,那么this指针自然也不可以用。
追问
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答
不能对非静态成员操作
你说的书上的例子,可以粘一下。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这里没有设置成静态函数啊,在F前面加个STATIC,你看看还能运行不。
追问
就是说,静态成员函数里,不能对非静态成员变量进行操作?
追答
是的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询