@CrazyHenry
2018-02-26T17:09:01.000000Z
字数 670
阅读 1341
ccccC++Primer
- Author:李英民 | Henry
- E-mail: li
_
yingmin@
outlookdot
com- Home: https://liyingmin.wixsite.com/henry
快速了解我: About Me
转载请保留上述引用内容,谢谢配合!
类作用域是个非常复杂的概念,在类的作用域中,可以访问到其静态函数,不论是哪个文件里。这一点与C语言里的静态函数不一样。因为即使你在string.cpp里定义的静态函数,在main.cpp里只要include了string.h就可以通过string::staticfunc()来调用静态函数。因为类作用域可以跨越文件。
但是全局作用域被划分了几个层次,一个是static全局作用域,在本源文件才可以访问。而非静态全局作用域,就可以跨文件访问。
类对象本身存了类作用域的地址(但是不占对象所占内存),因此通过对象可以访问到类作用域,包括类作用域里的普通成员函数以及静态成员函数。
C++引入了访问限制符,就把这个问题变得更复杂了!
同样的,类作用域里的静态函数也存在固定的静态区,因此调用时不需要建立堆栈框架。但是调用普通的成员函数时,仍需要在每个调用点建立堆栈框架,比如为函数内需要使用的局部变量分配栈区,完成函数调用。