C++编译器对属性和方法的处理机制

来源:互联网 发布:网络道德的原则有 编辑:程序博客网 时间:2024/06/08 06:41

C++编译器对属性和方法的处理机制

本文记录了C++学习过程中的一些基础点

1. C++类对象中的成员变量和成员函数是分开储存的

  • 成员变量:
    • 普通成员变量:存储与对象中,与struct变量有相同的内存布局和字节对齐方式。
    • 静态成员变量:存储于全局数据区中。
  • 成员函数:
    • 存储在代码区中。

2.C++编译器对普通成员函数的内部处理

代码

class Test{private:    int var;public:    Test(int _var)    {        this->var = _var;    }    int getVar()    {        return this->var;    }    static void Print()    {        printf("This is class test.\n");    }};int main(){    Test t(10);    t.getVar();    Test::Print();}
  • 上面的一段代码,是我们编写的c++代码,编译器是通过下面的方式进行处理的。从而将具体的对象分开。
struct Test//将类转化为结构体{    int Var;};void Test_initialize(Test *this,int _var)//将构造函数转化成含有结构体指针的普通函数{    this->Var = _var;}int Test_getV(Test *this)//将普通成员函数转化成含有结构体指针的普通函数{    return this->Var;}void Test_Print()//static函数转化为不带结构体指针的全局函数{    printf("This is class test.\n");}int main(){    Test t;    Test_initialize(&,10);    Test_Print();}

小结

  1. c++类对象中的成员变量和成员函数是分开存储的。按照内存模型进行存储。
  2. c++中类的普通成员函数都隐式包含了一个指向当前对象的this指针。
  3. 静态成员变量和静态成员函数属于类,可以通过类名(::)进行访问,也可以通过类对象(.)进行访问。
0 0
原创粉丝点击