1:编译器是如何处理static方法的?
2:编译器是如何处理static变量的?
3:public, private这样的关键字应用于类,方法,变量 编译器是如何处理的?
注:
1:能写出任何一个都可以
2:自己理解的也行

解决方案 »

  1.   

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

  2.   

    public:自由访问:
    private:类本身以及友元函数可以访问
    static:不用类的对象调用,只需类名:函数名即可
      

  3.   

    <Inside C++ Object Mode>/<深入c++对象模型>
      

  4.   

    public, private 这些不需要处理,在语法检查中通过就行了。
      

  5.   

    static方法我理解的和roger_ding(海天一色)不一样
    static方法是为了访问类的static变量的接口
      

  6.   

    static方法是可以访问类的static变量的,还可以不定义类的对象,直接访问类的成员函数。
    我前面讲的是编译器的动作,而不是程序逻辑,注意这是两个概念,
    那么对于编译器而言,static最终是被编译成全局函数的模型!