Effective C ++ 条款34

2024-05-29 04:38
文章标签 34 effective 条款

本文主要是介绍Effective C ++ 条款34,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

该条款讲的内容就是以下3点:
第一点:
pure virtual 成员函数的作用,纯虚函数的作用就是base class基类提供给derived class 派生类一个接口,而且只是起到接口的目的。
举到例子,

class picture
{public:virtual void Drew()=0;
};class picture1:public picture
{public:virtual void Drew(){//..........};
};class picture2:public picture
{public:virtual void Drew(){//..........};
};

对于一幅图片,绘画功能必须有,但是各种派生出的对象图片绘画过程却都不同,所以在base class中只定义drew函数接口就行了,没有实现的必要。

第二点:
virtual 函数的作用,既提供接口,也提供实现(implement),这是为了定义缺省的功能,如果基类一个函数的功能能满足部分派生类的对象,那么最好把这个基类函数定义成virtual函数。这样做可以减小程序员的工作量。如下例子,person都会跑,青年人直接继承 run()跑的功能,而婴儿的 run()跑的功能却需要重写。

class Person
{public:virtual void run(){//..........};
};class adult:public Person
{public:virtual void run(){//..........};
};class baby:public Person
{public:virtual void run(){//..........};
};

第三点:
non-virtual函数的意义是,对于基类中的函数功能,在每个派生类中都适用,没有重新定义的必要,没有覆盖的必要。那么选择non-virtual函数最合适。以下例子,只要是动物都需要吃,不用重写该功能

class animal
{public:void eat(){//..........};
};class chicken:public animal
{};

这篇关于Effective C ++ 条款34的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1012666

相关文章

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

『功能项目』武器的切换实例【34】

本章项目成果展示 我们打开上一篇33战士的A键连击的项目, 本章要做的事情是按键盘E键切换职业时切换手中的武器 首先在资源商店下载免费的武器模型 创建一个空物体 命名为WeaponPos 将武器预制体拖拽至WeaponPos (注意调整空物体位置就可以后续文章会更换武器) 隐藏两把武器 运行项目 隐藏装备 在资源商店

生信软件34 - 大幅提升Python程序执行效率的工具Pypy

在生信开发过程中,会大量使用Python脚本,除了多进程和多线程编程提高程序运行效率外,还可以借助效率更高的Python解释器来提高程序的运行速度, CPython 使用c语言实现的解释器, PyPy 使用python语言的子集RPython实现的解释器,一般情况下PyPy比CPython快4倍左右。 1. 比较解释器的运行效率 # task.pyimport timedef compute

LeetCode - 34. Search for a Range

34. Search for a Range  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个有序数组和一个数k,求k在这个数组中的起始下标和结束下标. analyse: 二分查找. Time comple

认知杂谈34

今天分享 有人说的一段争议性的话 I 环境的影响 I 首先得说说,环境这东西对人的影响真不是盖的。你要是老待在一个死气沉沉的地方,那你的激情和梦想,可能慢慢就会被磨得平平无奇。 I 激情的消逝 I 本来你可能是满怀激情,想要大干一场,但时间一长,那些日常的琐事就像小浪花一样,慢慢把你的激情拍散了。 I 生活的妥协 I 然后你可能就觉得,生活嘛,不就是得过且过,吃喝玩乐,遇到问题就随便应付一下

java34: 流

输入流 读 输出流 写 按照是否直接与特定的地方(磁盘,内存,设备)相连  节点流 低级流 可以从或向一个特定的覅放读写数据 处理流 高级流 处理另外一个流     不能独立存在(构造方法中需要传入另外一个流),     处理另外一个流     简化读写 按照处理的单位的不同分为 字节流 一次读写一个字节 字符流 一次读写一个字符 InputStream 和OutputStream

C++竞赛初阶L1-15-第六单元-多维数组(34~35课)551: T456501 计算矩阵边缘元素之和

题目内容 输入一个整数矩阵,计算位于矩阵边缘的元素之和。 所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素。 输入格式 第 1 行包含两个整数,分别为行数 m 和列数 n,两个整数之间空格隔开。 第 2 行开始有 m 行数据,每行包含 n 个整数,整数之间空格隔开。 输出格式 对应矩阵的边缘元素和。 样例 1 输入 3 33 4 13 7 12

【软件逆向】第34课,软件逆向安全工程师之段寄存器,每天5分钟学习逆向吧!

在x86架构的汇编语言中,段寄存器是一组用于存储内存地址的寄存器,它们与基址寄存器(如ebp、esp或eax)一起使用,以访问内存中的数据。段寄存器的主要作用是将线性地址转换为物理地址。 x86架构中的段寄存器包括: CS(Code Segment):代码段寄存器,存储当前正在执行的代码段的基址。DS(Data Segment):数据段寄存器,存储当前正在使用的数据段的基址。ES(Extra S

最高院关于背靠背条款最新批复

法释〔2024〕11号 最高人民法院关于大型企业与中小企业约定以第三方支付款项为付款前提条款效力问题的批复 (2024年6月3日最高人民法院审判委员会第1921次会议通过,自2024年8月27日起施行) 山东省高级人民法院: 你院《关于合同纠纷案件中“背靠背”条款效力的请示》收悉。经研究,批复如下: 一、大型企业在建设工程施工、采购货物或者服务过程中,与中小企业约定以收到第三方向其支付的款项为付款

【Hot100】LeetCode—34. 在排序数组中查找元素的第一个和最后一个位置

目录 1- 思路二分 - 左侧二分 + 右侧二分 2- 实现⭐34. 在排序数组中查找元素的第一个和最后一个位置——题解思路 3- ACM 实现 原题链接:34. 在排序数组中查找元素的第一个和最后一个位置 1- 思路 二分 - 左侧二分 + 右侧二分 右区间二分 ——> 找首次出现的位置 ——>nums[mid] >= target左区间二分 ——> 找最后一次出现