这是一个错误:
error: static member function ‘static void myClass::myfunct()’ cannot have cv-qualifier
请有人解释一下这个错误,以及为什么不能使用const。
#include<iostream>
class myClass{
static void myfunct() const
{
//do something
}
};
int main()
{
//some code
return 0;
}
发布于 2013-11-06 13:05:50
值得引用这里的标准
9.4.1静态成员函数
2)注意:静态成员函数没有此指针(9.3.2)。-end注:
static
成员函数不应是virtual
。不应存在具有相同名称和相同参数类型(13.1)的static
和非static
成员函数。 静态成员函数不应声明为const
__、volatile
__或const volatile
。
static
函数没有this
参数。他们不需要cv-限定符。
见this McNellis的答复
当将
const
限定符应用于非静态成员函数时,它会影响this
指针。对于类C
的const限定成员函数,this
指针为C const*
类型,而对于不限定的成员函数,this
指针为C*
类型。
发布于 2013-11-06 13:03:19
static
成员函数不绑定到其类的实例,因此它是const
和/或volatile
(即“cv限定”)是没有意义的,因为在调用该函数时没有const
或volatile
可应用到的实例。
发布于 2013-11-06 13:05:58
在那里编写const
是没有意义的,因为函数是static
,因此没有类实例来注入const
上下文。因此,它被视为一个错误。
https://stackoverflow.com/questions/19812786
复制相似问题