成员函数在类外定义的时候,函数名为啥不能加static
2018-01-12 20:52
281 查看
今天清理手机微信没用的数据【惊人啊,删了1G+的图,再删删其它没用的数据,腾出来3G+的空间】
无意间发现了一张以前聊天时候的图。
回忆了一下,当时讨论的是:为啥成员函数在类外定义时,函数名不能加static?
这种在类结构的里面定义静态函数,用static修饰函数名很正常。
但是这样在类内声明,在类外定义的,就不能再加static了。
static常用的两个作用,一个是作用域限制,一个是生存期限制。
对函数来说:
作用域限制:被static修饰的函数,只能用于代码本身文件的调用。
生存期限制:对函数来说,这条是用来说类的静态成员函数的。在类对象出生前,类的静态成员函数就活着了。
如果类外定义函数时在函数名前加了static,因为作用域的限制,就只能在当前cpp里用,
类本来就是为了给程序里各种地方用的,与类的本意冲突,限制了类的自由。
所以在类外实现类成员函数时,函数名前加个static修饰符就报错了。
无意间发现了一张以前聊天时候的图。
回忆了一下,当时讨论的是:为啥成员函数在类外定义时,函数名不能加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修饰符就报错了。
相关文章推荐
- C/C++——为什么类的静态成员函数在定义的时候不写static?
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- c++类的成员函数做回调函数为啥要申明为static的
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)(转)
- 基类中static定义的函数不能为虚函数
- 模板类中的成员函数定义返回值为类中的typedef类型时候注意
- Static成员函数不能修饰const
- 在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用 .
- static成员函数不能调用non-static成员函数
- static成员函数不能调用non-static成员函数
- 为什么static 成员函数不能为const
- C++类内为什么不能定义非const的static成员(待续)
- C++里的静态成员函数(不能用const的原因+static在c++中的第五种含义)
- static 成员函数定义(必须的)
- 为何static成员函数不能为virtual
- 模板类成员函数的定义问题:函数实现不能定义在源文件中,一定要在头文件中
- c++ 类成员函数如果被static修饰,就不能为const修饰
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用