C++ OOP学习记录
1、关于虚函数:
任何构造函数之外的非静态函数都可以定义为虚函数。
virtual只能出现在类内部的声明,而不能用于类外部的函数定义。
如果基类把一个函数声明为一个虚函数,则该函数在派生类中被隐式地声明为虚函数。
派生类中虚函数的形参与其基类对应虚函数的形参完全一致。
派生类中虚函数的返回类型也必须与基类函数匹配(当类的虚函数的返回类型是类本身的指针或引用时改规则无效)。
虚函数可以使用默认实参,如果某次函数调用使用了默认实参,则该实参值有本次调用的静态类型决定。若果虚函数使用了默认实参,则基类和派生类中定于的默认实参最好一致。(可参考:https://blog.csdn.net/xuyiqiang87/article/details/41349575)
2、关于抽象基类
虚函数在声明部分后面加=0,可以被声明为纯虚函数(只能出现在类内部虚函数声明语句处)。
纯虚函数无需定义,也可以在类的的外部提供定义。
含有纯虚函数的类是抽象基类。抽象基类负责定义接口,而后续的其他类可以覆盖该接口。派生类如果没有覆盖纯虚函数,则它任然是抽象基类。不能创建抽象基类的对象。
3、共有、私有和受保护继承
访问权限受到两个因素影响:
1:在基类中该成员的访问说明符
私有private:派生类的成员无法访问;
公有public:派生类的成员可以访问;
受保护protected:派生类的成员可以访问。
2:派生类的派生列表中的访问说明符:
私有private继承:派生类的对象无法访问基类的公有对象;
公有public继承:派生类的对象可以访问基类的公有对象;
受保护protected继承:派生类的对象无法访问基类的公有对象。
基类所有的公有成员在受保护继承的派生类中都是受保护的,即派生类的对象不能访问它,但是派生类的成员可以访问。
4、派生类向基类转换的可访问性
对于代码中的摸个给定节点来说,如果基类的公有成员是可访问的,则派生类向基类的类型转换也是可访问的,反之则不行。
https://blog.csdn.net/monster_acm/article/details/81200777
转载于:https://www.cnblogs.com/zhang-le/p/10555398.html
C++ OOP学习记录相关推荐
- C++ Primer Plus 学习记录(第五章节-包含练习题答案)
C++ Primer Plus 学习记录(第五章节-包含练习题答案) 5.1 for循环 5.1.1 for循环的组成部分 1.for循环的组成部分所完成的步骤 2.赋值表达式有值 3.cout中显示 ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- springboot @cacheable不起作用_Springboot学习记录13 使用缓存:整合redis
本学习记录的代码,部分参考自gitee码云的如下工程.这个工程有详尽的Spingboot1.x教程.鸣谢! https://gitee.com/didispace/SpringBoot-Learnin ...
- 【Cmake】Cmake学习记录
Cmake学习记录 1.1 常例 add_library(gen_reference_infogen_reference_info/gen_reference_info.hgen_reference_ ...
- ASP.NETCore学习记录(一)
ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.N ...
- Android开发技术周报176学习记录
Android开发技术周报176学习记录 教程 当 OkHttp 遇上 Http 2.0 http://fucknmb.com/2018/04/16/%E5%BD%93OkHttp%E9%81%87% ...
- add函数 pytorch_Pytorch学习记录-Pytorch可视化使用tensorboardX
Pytorch学习记录-Pytorch可视化使用tensorboardX 在很早很早以前(至少一个半月),我做过几节关于tensorboard的学习记录. https://www.jianshu.co ...
- java之字符串学习记录
java之字符串学习记录 public class StringDemo { public static void main(String[] args) { //静态初始化字符串 String s1 ...
最新文章
- zcmu1157: 新年彩灯Ⅱ(二维树状数组)
- linux netfilter 过滤数据包,Netfilter-iptabes报文过滤框架(一)
- 双网卡绑定linux7.2,CentOS 7.2 bond实现网卡聚合链路(双网卡绑定)脚本及验证(适合云平台)...
- CodeForces 598A Tricky Sum
- 解决方案-Visual Studio设置通用配置(包含路径+依赖库)
- 什么是软件开发生命周期?
- “汇新杯”科技+文化艺术专项赛介绍
- xp系统计算机怎么连接到网络打印机,XP系统安装网络打印机教程(xp添加网络打印机步骤)...
- 关于《error: 函数“int main(void)”已有主体》的错误
- Adobe CC 2015全系列产品下载 PS DW AE等 附注册机补丁
- 真实性能大揭秘 热门移动显卡横向测试
- ccf认证--201809-1 卖菜(100分)
- 【Python黑科技】lxml库爬虫实战-爬取句子控的名人名言句子(保姆级图文+实现代码)
- 如何处理“WLAN没有有效的IP配置”这一问题?
- IT 界惊现文豪!华为领导及阿里 P10 遭吐槽!
- Qt之QTableView的使用
- 用c++实现俄罗斯方块(免费版)
- 孩子好动爱疯跑就是感统失调吗?不一定!
- idea中jar包关联源码
- SAP:物料主数据增强