您的位置:首页 > 其它

成员函数在类外定义的时候,函数名为啥不能加static

2018-01-12 20:52 281 查看
今天清理手机微信没用的数据【惊人啊,删了1G+的图,再删删其它没用的数据,腾出来3G+的空间】
无意间发现了一张以前聊天时候的图。



回忆了一下,当时讨论的是:为啥成员函数在类外定义时,函数名不能加static?

class Point
{
public:
void init()
{
}
static void output()
{
}
};
void main()
{

}

这种在类结构的里面定义静态函数,用static修饰函数名很正常。

class Student
{
public:
static void PrintfAllStudents();
};
void Student::PrintfAllStudents()
{

}
void main()
{

}

但是这样在类内声明,在类外定义的,就不能再加static了。
static常用的两个作用,一个是作用域限制,一个是生存期限制。
对函数来说:
作用域限制:被static修饰的函数,只能用于代码本身文件的调用。
生存期限制:对函数来说,这条是用来说类的静态成员函数的。在类对象出生前,类的静态成员函数就活着了。

如果类外定义函数时在函数名前加了static,因为作用域的限制,就只能在当前cpp里用,
类本来就是为了给程序里各种地方用的,与类的本意冲突,限制了类的自由。

所以在类外实现类成员函数时,函数名前加个static修饰符就报错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐