100分 求助关于编译器如何处理static,public,private问题!

SakyaMuni 2004-09-07 08:59:56
1:编译器是如何处理static方法的?
2:编译器是如何处理static变量的?
3:public, private这样的关键字应用于类,方法,变量 编译器是如何处理的?
注:
1:能写出任何一个都可以
2:自己理解的也行
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangshengyu 2004-09-10
  • 打赏
  • 举报
回复
public, private 这些不需要处理,在语法检查中通过就行了。
DentistryDoctor 2004-09-10
  • 打赏
  • 举报
回复
<Inside C++ Object Mode>/<深入c++对象模型>
DentistryDoctor 2004-09-10
  • 打赏
  • 举报
回复
强烈楼主阅读C++对象模型,这可是大师名作哟。
Pipi0714 2004-09-10
  • 打赏
  • 举报
回复
public:自由访问:
private:类本身以及友元函数可以访问
static:不用类的对象调用,只需类名:函数名即可
roger_ding 2004-09-10
  • 打赏
  • 举报
回复
注:下面的都是针对VC6编译器的

1. static方法,应用于类里面的成员函数其实等同于全局函数,即不需要对象,可以直接调用,那么编译器在遇到程序调用这类函数时,就会判断调用者有没有传入对象指针,如果没有,ok!有,就报错!编译方法就当全局函数来编译了
2. static变量,这个变量的地址是启动初就分配好的,其实它的地址处于文件内部,当文件载入内存时,static变量的地址也就确定了(如果需要,是必须重定位的!)那么不管是全局的static还是类的static,编译器的处理方法都是一样的,而且类的static必须在外面再声明一次就是这个道理!(必须在编译的时候就确定地址,而类是缥缈的)
3. public, private这样的关键字,编译器不做任何特殊处理,只是在编译的时候用来判断调用是否合法,在编译成code以后,是不存在public, private这样的分别的!

注:都是我个人理解!
roger_ding 2004-09-10
  • 打赏
  • 举报
回复
static方法是可以访问类的static变量的,还可以不定义类的对象,直接访问类的成员函数。
我前面讲的是编译器的动作,而不是程序逻辑,注意这是两个概念,
那么对于编译器而言,static最终是被编译成全局函数的模型!
shangjun 2004-09-10
  • 打赏
  • 举报
回复
static方法我理解的和roger_ding(海天一色)不一样
static方法是为了访问类的static变量的接口
allenq 2004-09-07
  • 打赏
  • 举报
回复
kao, 编译原理啊...

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧