众所周知:
c语言是一门面向过程的高级编程语言,而c++是一门面向对象的高级编程语言。
两者之间的区别:
C语言面向过程,关注的是过程,分析求解问题的步骤,通过函数调用逐步解决。
C++基于面向对象,关注的是对象,将问题拆解为对象,通过对象交互完成求解。
C++下对象的生成是依靠类来实现的。
类是物质世界存在的抽象,这种抽象基于需求来选择。对象是类的实例化。
类的定义:
class className{
//类的主体:由成员变量和成员函数组成
};
class 为关键字,className为类名,{}为主体
成员变量为类中的元素 也称为类的属性。
类中的函数也成为类的方法。
类的限定符:
public 在类外可直接被访问
protected和private修饰的成员在类外不能被直接访问
访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现为止
class默认访问权限为private
注意:访问限定符只在编译时有用,当数据映射到内存后,没有限定符上的区别。
类定义了一个新的作用域,类的所有成员都在类的作用域中。
在类体外定义成员,需要使用 :: 作用域解析符 指明成员
struct 默认权限为public
类限定符的作用:
体现面向对象的三大特点之一的封装。使得将数据和方法有机结合,隐藏对象的属性和细节,仅对外公开接口和对象进行交互。
类与结构体的区别:
结构体中只能定义变量,类中可以定义方法
结构体为默认权限为public的特殊class
类的实例化:
用类创建对象的过程,称为类的实例化。
一个类的大小,实际就是该类中”成员变量”之和,当然也要进行内存对齐,注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类。
this指针::C++编译器给每个“成员函数“增加了一个隐藏的指针参数,让该指 针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访 问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
特性:
1. this指针的类型:类类型* const
2. 只能在“成员函数”的内部使用
3. this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this 形参。所以对象中不存储this指针。
4. this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过寄存器自动传递,不需要用户传递。