本周学习了多态性和部分的输入输出流。主要学了 1、静态多态包括运算符重载,函数重载。注意运算符重载的规则和一些限制,分为非成员函数实现和成员函数实现。 2、类型转换函数可以将本类函数对象转化为其他类对象,含有其他运算符如++、--的重载。 3、静态联编、动态联编(虚函数的定义和使用)。 4、纯虚函数 ...
分类:
其他好文 时间:
2018-12-21 22:48:05
阅读次数:
224
虚析构函数 通过基类的指针删除派生类对象时,通常情况只调用基类的析构函数 但是,删除一个派生类对象时,应该先调用派生类的析构函数,然后调用基类的析构函数(构造时自顶向下,析构时自底向上) 这种情况会产生内存泄漏,最终导致系统应可用内存不足而崩溃 解决办法 把基类的析构函数声明为virtual,此时派 ...
分类:
其他好文 时间:
2018-11-13 00:17:03
阅读次数:
369
1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。 子类可以重写父类的虚函数实现子类的特殊化。 如下就是一个父类中的虚函数: 2.纯虚函数(pure virtual) C++中包含纯虚函数的类,被称为是“抽象类”。抽 ...
分类:
编程语言 时间:
2018-11-06 15:42:18
阅读次数:
187
1、invalid new-expression of abstract class type ‘×××ב 这个报错代表一个尝试在实例化一个抽象类,也就是说父类的接口中有纯虚函数在子类中没有实现; 举例: 这样编译就会报错,子类中必须要实现所有父类里面定义的纯虚函数 正确方式如下: ...
分类:
编程语言 时间:
2018-11-04 12:37:54
阅读次数:
116
在学习c++的时候,大部分教材与书籍都是在讲述c++的语法,或者说是在描述语言的一些特性。比如我们熟悉的抽象,封装,继承,多态。当然,这其中也包含了类与对象,多继承,虚继承,虚函数,纯虚函数等等一些具有语言特性的内容。大部分书籍在这方面的内容是比较全面的(大部分语言特性)。但是,对于类这种抽象数据类 ...
分类:
编程语言 时间:
2018-10-27 23:33:37
阅读次数:
290
1、基本概念 纯虚函数是一个在基类中说明的纯虚函数,在基类中没有定义,要求任何派生类都定义自己的版本。 纯虚函数为各派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)。 纯虚函数的语法: 一个具有纯虚函数的基类称为抽象类。 2、抽象类小案例 3、抽象类在多继承中的应用 绝大多数面向对象语 ...
分类:
其他好文 时间:
2018-10-26 19:35:59
阅读次数:
133
抽象策略角色: 策略类,通常由一个接口或者抽象类实现。 -具体策略角色:包装了相关的算法和行为。 -环境角色:持有一个策略类的引用,最终给客户端调用。 #pragma once //策略接口(纯虚函数)class IStrategy{public: IStrategy() {} virtual ~I ...
分类:
其他好文 时间:
2018-10-22 13:04:28
阅读次数:
134
C++中,通过类实现面向对象的编程,而在基类中只给出纯虚函数的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口,不同派生类实现接口的方式也不尽相同,从而实现多态。 我们需要遵循一些规则: ...
分类:
编程语言 时间:
2018-10-11 23:42:23
阅读次数:
195
纯虚函数 1.有纯虚函数的类,是抽象类。抽象类不可以被实例化。但是可以定义抽象类的指针。 2.当继承父类是抽象类的时候,子类必须全部覆盖父类的纯虚函数后,才可以被实例化。 ...
分类:
其他好文 时间:
2018-09-29 15:28:39
阅读次数:
195
什么是抽象类? 问题: Shape类有必要存在吗? 抽象类是面向对象中必须支持的。 抽象类初探: 编译结果如下: 完善示例: 纯虚函数要在子类中重写。 运行结果: 抽象类不能定义对象,但是抽象类可以定义指针。 抽象类与纯虚函数: 接口: C++中没有真正的接口,没有具体的语法支持,后续的语言C#、J ...
分类:
编程语言 时间:
2018-09-04 00:07:07
阅读次数:
163