语法

作者: ahubaoan | 来源:发表于2018-10-10 09:23 被阅读0次

virtual

1.virtual声明的函数实现多态
就是通用的多态实现

2.纯虚函数
C++的纯虚函数用于表示一个类不能被创建实例, 必需是子类覆盖该方法的定义后,方可新建类实例,格式是在虚函数后面添加 = 0。
假如上例中的Range只是一个初步表示区域的一个类,那么它的getRange()方法需要由子类实现才有效,表示为:
virtual float getRange() = 0;
此时不能再创建Range rt()实例,将会报错:
cannot declare variable ‘rt’ to be of abstract type ‘Range’
range2.cpp:3:13: note: because the following virtual functions are pure within ‘Range’:
但我们仍然可以新建Range的指针,指向Circle或者是Square

3.一个有意思的问题:为什么析构函数要设置成虚函数
Range *r1 = new Circle(3, 4);
如果析构函数不是虚函数,则r1在释放内存时,则调用提Range的析构函数。
结果并不是想要的结果,我们想要的结果是调到Circle对象的析构函数。
如果析构函数是虚函数,有多态的支持,r1调用Circle对象的析构函数,Circle对象的析构函数默认调用父类Range的析构函数,保证Circle和Range对象的内容都得到清除。

4.虚继承
多重继承时需要关注

相关文章

  • GO语言gin框架实战-04-websocket链接

    1. 升级接口 1.1 语法 - 升级接口 语法 语法示例 - 关闭 语法 语法示例 - 接收前端信息 语法 语法...

  • 软帝学院:80道java基础部分面试题(四)

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集...

  • JSON 语法

    JSON 语法是 JavaScript 语法的子集。 JSON 语法规则 JSON 语法是 JavaScript ...

  • art-template模板

    art-template同时支持两种模板语法:标准语法 和 原始语法 标准语法: {{ 数据 }}原始语法: <%...

  • Dart的一些语法糖(持续更新)

    语法糖 ?. 与 ?? dart 语法糖 ?. dart 语法糖 ??

  • dart语法7-泛型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法8-库

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法10-生成器

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法9-异步

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法11

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

网友评论

      本文标题:语法

      本文链接:https://www.haomeiwen.com/subject/utnuaftx.html