首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么静态成员函数不能有cv-限定符?

为什么静态成员函数不能有cv-限定符?
EN

Stack Overflow用户
提问于 2013-11-06 13:01:41
回答 5查看 24K关注 0票数 38

这是一个错误:

代码语言:javascript
运行
复制
error: static member function ‘static void myClass::myfunct()’ cannot have cv-qualifier

请有人解释一下这个错误,以及为什么不能使用const。

代码语言:javascript
运行
复制
#include<iostream>
class myClass{      
   static void myfunct() const 
   { 
     //do something
   }
};

int main()
{
   //some code
   return 0;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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*类型。

票数 53
EN

Stack Overflow用户

发布于 2013-11-06 13:03:19

static成员函数不绑定到其类的实例,因此它是const和/或volatile (即“cv限定”)是没有意义的,因为在调用该函数时没有constvolatile可应用到的实例。

票数 13
EN

Stack Overflow用户

发布于 2013-11-06 13:05:58

在那里编写const是没有意义的,因为函数是static,因此没有类实例来注入const上下文。因此,它被视为一个错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19812786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档