Loading

c++学习记录(三)

c++面向对象记录(二)

1.继承

继承是面向对象程序设计的一个重要概念。继承指依据另一个类来定义一个类,就好像子女继承父母的基因。运用继承的方法,我们就不需要重新编写数据成员。已有的类称为基类,新建的类称为派生类或者子类。

(1)子类定义

定义一个子类,使用格式:

\\class 子类名: 访问修饰符 基类名

(2)访问控制和继承

子类可以访问基类中的非私有成员,不可访问私有成员。子类继承了除下列情况外基类的所有方法:
·基类的构造方法、析构方法和拷贝构造函数
·基类的重载运算符
·基类的友元函数

(3)继承类型

使用不同类型的继承是,有以下规则:
·public继承:基类public、protected、private成员的访问属性在子类中分别变为:public、protected、private
·protected继承:基类public、protected、private成员的访问属性在子类中分别变为:protected、protected、private
·private继承:基类public、protected、private成员的访问属性在子类中分别变为:private、private、private

(4)多继承

类可以从多个类中继承,格式如下:

\\class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>
{
    body
};

2.重载运算符和重载函数

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。例如:在类中定义三个print函数,分别输出整型、浮点型、字符型数据,程序会判断你输入的数据类型进行合适的函数匹配,这个过程称为重载决策。
重载运算符由关键字operator和运算符符号构成,格式如下:

\\classname operator运算符(参数):

注意成员访问运算符,成员指针访问运算符,域运算符,长度运算符,条件运算符,预处理运算符不可重载

3.多态

多态使用于有层次结构并且有继承关系的类,指在调用成员函数时,根据调用的对象类型来执行不同的函数。

(1)虚函数

静态多态(静态链接或早绑定):函数调用在程序执行前已准备好。通过静态多态后,如果子类中不进行操作,则会返回基类中的设置。如果想根据子类而进行改变,则要定义虚函数(动态链接或后期绑定)。
虚函数以关键字virtual定义

(2)纯虚函数

如果你想在子类中重新定义基类中的函数,而基类中的函数又不能有意义,则可以使用纯虚函数,格式:

\\virtual 数据类型 function()=0;

4.数据抽象

数据抽象是一种依赖于接口和实现分离的编程(设计)技术,是指只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。我的理解是能给用户看的部分使用public定义,其他部分则使用protected或者private定义。

数据抽象的好处

(1)类的内部受到保护
(2)类实现可能随着时间的推移而发生变化,以便应对不断变化的需求

5.数据封装

数据封装是一种把数据和操作数据的函数捆绑在一起的机制。c++通过创建类来进行数据封装。数据封装使用到访问修饰符public、protected和private。一般为了保证良好的封装性,使用private设置私有成员进行访问限制。

6.抽象类

c++接口使用抽象类来实现,抽象类中至少有一个纯虚函数。设计抽象类是为了给其他类提供一个可继承的适当基类,但抽象类不能被用于实例化对象,只能作为接口。可用于实例化对象的类被称为具体类。

总结:c++面向对象也算了解完了基础知识,面向对象有封装、抽象、继承、多态四大特点,使用方法多样,希望我能运用好它们做有意思的项目。

posted @ 2020-01-30 15:44  洋洋羊羊  阅读(152)  评论(0编辑  收藏  举报