首页 > 代码库 > C++ 不能在类体外指定关键字static
C++ 不能在类体外指定关键字static
C++ static 函数的问题
近日读 C++ primer 中static 一章 , 有这么一句话,
“静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为
const 或volatile 之外与非静态成员函数相同出现在类体外的函数定义不能指定关键字
static”
为什么不能在类体外指定关键字static , 这样设计的目的是什么,有什么用处?
2#
怎么说呢, 这是一个作用域的问题!
成员函数的作用域是类域, 而在类体外加上static不是表示静态函数,表示的是函数拥有文件域(file scope)
而类域是小于文件域,强行把类域扩大到文件域,就会出错。
如下代码:
class CA {
public:
static void display(void);
};
static void CA::display(void) { // ERROR!
cout << "Hello CA!" << endl;
}
int main(int argc, char* argv[]) {
CA::display();
}
// error C2724: ‘CA::display‘ : ‘static‘ should not be used on member functions defined at file scope
C++ 不能在类体外指定关键字static
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。