1.面向对象
面向对象的三大特性:封装、继承、多态。
类和对象:类由数据成员和成员函数构成,是抽象的;而对象是具体的。
封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对
不可信的类进行信息隐藏。(C++最大的优点:可以隐藏代码的实现细节,使得代码更模块化)
继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展,但是
基类的构造函数、复制构造函数、析构函数、赋值运算符不能被派生类继承。(优点是实可以扩展已存在
的代码模块类)
多态:一个类实例的相同方法在不同情形有不同表现形式。多态实现的两种方式:将子类对象的指
针赋给父类类型的指针或将一个基类的引用指向它的派生类实例。(其中比较重要的是虚函数的使用以及
指针或引用)
this 指针:一个对象的 this 指针并不是对象本身的一部分,不会影响 sizeof(对象)的结果。this 作
用域是在类的内部,当在类的非静态(前面没加 Static)成员函数中访问类的非静态成员的时候,编译器
会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,各成员的访问均通过 this 指针进行。
(静态成员是没有 this 指针的)´
构造函数:主要用来初始化数据。
析构函数:主要用来释放堆区申请的内存空间。
2.继承性
a.公有继承(public):基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而
基类的私有成员仍然是私有的。
b.保护继承(protected):基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它
的派生类成员函数或友元访问,基类的私有成员仍然是私有的。
c.私有继承(privatem 默认):基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这
个派生类的子类所访问。
d.友元函数: 友元函数是一种定义在类外部的普通函数,但它需要在类体内进行说明
friend 类型友元函数名(参数表);
友元函数可以访问类中的所有成员,一般函数只能访问类中的公有成员。´某类的友元函数的作用域
并非该类作用域。友元函数破坏了面向对象程序设计类的封装性,所以友元函数如不是必须使用,尽量少
用。
3.多态性
a.多态:相同对象收到不同消息或不同的对象接收相同的命令而做出的不同反应叫做多态。
多态分为:静态绑定(函数重载)和动态绑定(虚函数)两种。
b.虚函数:(普通虚函数、虚析构函数、纯虚函数{抽象类/接口类}、虚函数表)在某基类中声明为´
virtual 并在一个或多个派生类中被重新定义的成员函数,必须用函数的指针或声明调用。
c.重写与重载:方法的重写和重载是多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载
在一个作用域中定义了同名函数,函数参数或返回值不同,是一个类中多态性的一种表现。如果在子类中
定义某方法与其父类有相同的名称和参数,我们说该方法被重写子类的对象使用这个方法时,将调用子类
中的定义,而且如果子类的方法名和参数类型和个数都和父类相同,那么子类的返回值类型必须和父类的
相同。
4.指针与引用
a.相同:指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名。