|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1、面向对象理论到计算机程序的转换
C++中,在面向对象的程序设计中,将变量(属性)和函数(方法)集中定义在一起,用于描述现实生活中的类,但是在计算机的内部程序中这个是怎样来实现的呢?C语言中的内存四区模型不在适用了吗?C++又是如何管理,类、对象以及类和对象的关系的呢?
- class Test
- {
- private:
- int m1;
- static int m;
- public:
- Test(int i)
- {
- m1 = i;
- }
- int get()
- {
- return m1;
- }
- static void print()
- {
- cout << "this is a static class function!" << endl;
- }
- };
-
- void main()
- {
- printf("%d\n", sizeof(Test)); // 4
- system("pause");
- }
复制代码
上述程序可以发现,用该类在程序块中的内存只占4个字节。
结论:用类定义对象时,类中的静态成员是不会在分配内存的,(它放于全局区),类中的成员函数也是不会分配内存的,他们放于代码区,而只会给对象所独有的成员变量才会分配内存空间。
于是引出上面的问题:C++又是如何管理,类、对象以及类和对象的关系的呢?
C++中是用重命名函数名来解决的。
从上图来看,C++的类其底层也是C来实现的,只是对其成员函数做了一层包装。
而且可以看出对象调用类中定义的成员函数时,多了一个指针。该指针就是指向调用对象本身。即this指针。
this指针:指向对象自身的指针。python中为self.
2、总结
1.C++类对象中的成员变量和成员函数是分开存储的,C语言的内存四区模型仍然有效。
2.C++中类的普通成员函数都隐式包含一个指向当前对象的this指针。
3.静态成员函数、成员变量属于类
注意:静态成员函数域普通成员函数的区别
静态成员函数不包括指向的具体对象的指针
普通成员函数包含一个指向具体对象的指针 |
|