您的位置:首页 > 编程语言 > C语言/C++

C/C++——为什么类的静态成员函数在定义的时候不写static?

2017-05-23 09:51 423 查看

解释一:

举个例子,Base是一个类,data是他的int型static数据成员,那么我们这么定义:

int Base::data = 10;


1、因为使用static数据成员时,都是
Base::data
。。。。这么来用的,编译器知道data是在类Base的作用域内,它会去查看data在类中是怎么生命的,所以在定义处加static是没有必要的;

2、那如果加上static,也就是:

static int Base::data = 10;


这样的话,static并不在类的作用域内(并不在Base::后面),所以就得把static做一般解释了,那就是定义一个全局静态变量,也就是在其他源文件中是不能使用的。试想,如果类的定义是在某个头文件中,而这个定义又在另一个文件中,那让编译器情何以堪啊!

解释二:

静态成员 是 类成员

它和 对象成员(类的示例成员)差别之处在于当我实例化多个类的对象时, 这些对象共用这一个类的静态成员。不过前提是你要先定义这个静态成员。

class Task {
public:
private:
static int n;
}


这只是声明了一个静态成员 ,但还没定义。

声明时需要告诉编译器这是什么类型, 但定义时, 编译器会自己找声明

C++中有很多类似语法:

比如, 默认参数列表, 是声明的时候加默认参数, 定义函数的时候不需要;

定义inline函数也是声明的时候加inline, 定义的时候不加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐