关于系统编写知识点的总结

关于系统编写知识点的总结

一 类与对象
有关类与对象的知识点在上一篇博客以简单说明,在这只做一些补充。
1.类是系统编写的基础,系统的功能都是基于不同的类实现的。
2.在系统编写中,类分为数据类和操作类。数据类主要用于数据的储存,一般规定了类对象的数据组成,除了数据对象、构造函数外,数据类还有一些简单函数,主要方便操作类对于数据类的操作。操作类主要用于对数据类的操作,实现预先设想的功能。
二 重载运算符
1.基本概念
重载运算符是为了方便对用户自定义类型进行操作,将运算符看作是一种特殊的函数,而用户自定义类型就是运算符的参数,运算结果就是返回值。运算符重载不会改变运算符原有的含义,只有至少一个操作数是重载运算符时规定的自定义类型,重载运算符才会起作用。
重载运算符形式如下
类型 operater 运算符(参数列表){函数体}
2.运算符函数
运算符函数的参数个数取决于
(1)一元运算符或二元运算符
(2)运算符函数是成员函数还是非成员函数
运算符函数是成员函数时,调用一元运算符时,该对象就为第一个操作数,无需再提供参数。调用二元运算符时,当前对象为左操作数,需要提供一个参数做为右操作数。
运算符函数是非成员函数时,重载一元运算符需要提供一个类类型的参数,重载二元运算符时,需要提供两个参数,至少其中一个参数必须是类类型。一般将非成员运算符函数声明为类的友元。
注:除了重载的函数调用运算符operator()之外,其他运算符函数不能有默认实参。
3.慎用运算符重载
1.赋值(=)、下标([])、函数调用(())和成员函数访问箭头(->)运算符必须是成员函数
2.自增自减都是一元运算,后缀形式的自增自减比前缀形式多一个参数,这个参数并不使用,只是用来区分。
三 组合与继承
1.组合
1.1对象成员与组合的关系
将一个类的对象作为另一个类的成员,被称作组合或包含。常用方式是将嵌入对象作为新类的私有成员。成员对象是组合对象的一部分,随组合对象进行创建或撤销。成员对象不作为独立对象对外展现。
1.2对象成员的初始化
创建包含对象成员的组合对象时,会执行成员类的构造函数初始化对象成员。成员对象的初始化使用初始化列表语法。
注:如果没有在初始化列表中对成员对象显式初始化,会执行成员对象的默认构造函数。
当组合对象被撤销时,会执行其析构函数,同时也执行成员对象的析构函数,析构函数的执行次序和构造函数相反,成员初始化的次序和成员声明的次序相同,并不考虑它们在初始化列表中的排列顺序。
1.3复用类的实现
(1)修改已有类得到合适的复用类。
(2)组合已有类,重新包装,修改,添加特有的功能得到复用类。
2.继承
继承是面向对象的核心特征之一,封装、继承、多态性。
继承已有类的新类可以拥有已有类的特性,并可以修改继承到的特征或增加自己的新特性。
2.1基本概念
在已有类的基础上创建新类的过程成为继承。被继承的已有类成为基类,继承得到的新类称为派生类,派生类可以在被继承。
类继承关系的语法形式
class 派生类名:基类名表
{
数据成员和成员函数声明
};
基类名表构成
访问控制 基类名1,访问控制 基类名2,……
访问控制表示派生类对基类的继承方式,使用关键字:
public 公有继承
private 私有继承
protected 保护继承
2.2派生类的生成过程
(1)吸收基类成员(全部吸收(构造、析构除外),但不一定可见)
(2)改造基类成员
通过在派生类中定义与基类同名的成员(包含数据成员和成员函数)来屏蔽(隐藏)基类原有的同名成员。
(3)添加新成员
在派生类中添加新成员,保证派生类的特殊性和新功能。
2…3派生类的构造函数
派生类的数据成员包括基类的数据成员,也包括派生类新增数据成员,在初始化派生类时,调用基类构造函数对基类成员进行初始化。
派生类构造函数一般格式:
派生类名(参数总表):基类名(参数表)
{
派生类新增成员的初始化语句
}
注:这是基类有带参的构造函数时使用
四 虚函数和多态性
1.虚函数
基类在成员函数声明语句之前加上virtual关键字使该函数执行动态绑定,此函数就为虚函数。在继承此基类的派生类中会重新定义虚函数,使用含有虚函数的基类地址(指针或引用)调用派生类使用此函数会有不同的实现结果,即多态性。
语法形式:
virtual 返回类型 成员函数名(参数表);
注:虚函数在基类中用virtual关键字声明,virtual只能在类能的成员函数声明之前,不能用于类外函数定义。除了构造函数之外,任何非静态成员函数都可以是虚函数。
2.虚函数的覆盖规则
派生类中可以重新定义基类的虚函数,这称为覆盖。
基类声明虚函数后,在所有派生类中,即使不再重复声明,该函数也是虚函数。派生类可以覆盖基类中的虚函数实现自己的需要。如果没有覆盖,派生类继承基类的虚函数。在派生类中覆盖基类的虚函数时要用相同的参数表和返回类型。
3.虚析构函数
构造函数不能是虚函数,析构函数可以是虚函数。基类的析构函数如果声明为虚函数,其派生类的析构函数也为虚函数。
4.实现多态性的步骤
(1)在基类中将需要多态调用的函数声明为virtual
(2)在派生类中覆盖基类的虚函数,实现各自需要的功能
(3)用基类的指针或引用指向派生类对象,通过基类指针或引用调用虚函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值