目录
1.面向过程与面向对象初步认识
2.类的引入
4.类的访问限定及封装
5.类的作用域编辑
6.类的实例化
7.类对象模型
8.this指针
C++的封装性
C:面向过程
C++:面向对象
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。
比如: 之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;
现在以C++方式实现,会发现struct中也可以定义函数。
C++可以用struct定义类,但更常用的是class
成员变量前面一般会+‘-’
例:
例:
所以计算类的大小只是计算类对象的大小,并不包括类的函数的大小
在调用函数是,是在公共区域找,而不是在类对象中找
例:
给一个byte的大小,表面被实例化定义过。
补充:
关键字:this
编译器完成的操作如下:(紫色的部分)
(但是不能自己加哦)
但是可以自己显式地打印this
几个小问题(面试题)
1.this指针存在在哪里
栈上(因为它是隐含形参)
vs下面是通过ecx寄存器
2.空指针问题
第二个运行崩溃是由于进行了解引用操作
那下面这个呢?
为什么呢?
func并不在对象里面,那就在公共代码区去走,ptr真正的意义是传递给this
有没有解引用的行为取决于右面的东西在不在对象里面,而不是用没用那个符号(->或者*符号等)
对比C语言:
C++:
C语言: