码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 不能在类体外指定关键字static

时间:2014-11-25 17:50:05      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:style   http   io   ar   sp   文件   on   问题   cti   

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

标签:style   http   io   ar   sp   文件   on   问题   cti   

原文地址:http://www.cnblogs.com/kira2will/p/4121241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!