序:c语言是面向过程的编程语言,而c++是面向对象的语言,主要关注于对象。
1:类
ps:简单来说,可以将类理解为c语言中的结构体的优化,c++中也可以实现结构体。二者的区别主要有:结构体中不可以定义函数,而类中可以。
(1)类的定义
class name
{
成员函数以及对象;
};
(2)类的访问限定符
访问限定符分别为:public ,private ,protect.
public:可以从类的外部进行调用。
private:不可以直接在类的外部进行调用,但可以直接类的作用域中进行使用。
protect: 作用与private基本类似。
使用规则:
访问限定符作用域从该访问限定符出现的位置到下一个访问限定符出现的位置为止,如果后面没有,即到‘}’为止,即类结束。
Ps:类的默认访问权限为private,结构体的默认访问权限为public。
(3)类的作用域
面向对象的三大特性:封装,继承,多态。
类域的意义:将一些函数以及对象进行封装和管理。
在C++中也可以对于类中的成员函数进行声明和定义的分离。如下:
(4)类的实例化
以栈为例,当在局部域中定义了一个栈之后,类中的成员变量就以及被实例化。
简单而言,就是将类在main函数中进行声明时,其类中的成员变量就已经被实例化。
(5)计算类的对象大小
计算类的对象大小(同c语言一样,适用内存对齐原则)。
Ps:在计算类的对象大小时,只计算类的成员变量,不计算类的成员函数。
空类以及只含有成员函数的类的大小都为1,不是0.
2:隐含的this指针
既然类调用的都是同一个函数,为什么函数可以对于不同的传参进行不同的处理,原因是在传参的过程中,编译器默认地把对象的地址也传过去了,作为this指针。
如下:
Ps:this指针是隐式类型的,不可以在实参或者形参中显示写出。
this指针一般存储在栈上,或是寄存器ecx上。