《C++常见问题及解答》
一、类
1. 常数据成员的初始化只能在构造函数的初始化列表中进行
2. 静态数据成员不可以在类内初始化
3. 创建一个对象时的构造函数的调用次序:对象成员的构造函数、对象自身的构造函数
4. 创建一个派生类对象时的构造函数的调用次序:基类的构造函数、派生类对象成员的构造函数、派生类构造函数
5. class默认派生类是以私有继承方式继承基类
6. 基类的私有成员不可以被继承(无论哪种继承方式),故在派生类中无法访问
7. 公有派生类继承了基类中除构造函数、析构函数以外的所有非私有成员,且访问权限也完全相同
7. 派生类无法直接访问基类的私有成员,只能通过公有成员函数来间接访问
8. 基类构造函数的调用通过初始化列表来完成。
9. 派生类只需负责直接基类构造函数的调用。若直接基类构造函数不需要提供参数,则无需在初始化列表中列出(此时会自动调用基类构造函数)
10. 直接基类构造函数、对象成员、常成员和引用成员的初始化只能在构造函数的初始化列表中进行,普通数据成员的初始化也可以放在这里进行
11. 派生类中定义了和基类成员同名的新成员时,该派生类对象将包含这两个成员,只不过派生类对象和派生类内部成员函数访问的都是新成员
12. 派生类的多个直接基类中有同名成员时,该派生类对象将包含这些同名成员,当需要访问这些同名成员时,在成员前指明基类名即可
13. 虚基类的构造函数至多被调用一次,所有层派生类均需调用虚基类构造函数,只有最后一层派生类对虚基类构造函数的调用发挥作用
14. 创建一个继承自虚基类的派生类对象时的构造函数的调用次序:所有虚基类的构造函数、所有直接基类的构造函数、所有对象成员的构造函数、派生类构造函数
15. 多态性指一种行为对应着多种不同的实现,根据C++程序实现多态的不同阶段,多态的实现分为静态联编和动态联编
16. 静态联编是在程序编译阶段就能实现的多态性,也称编译时的多态性;动态联编是在程序执行阶段实现的多态性,也称运行时的多态性
17. 动态多态性:基于虚函数实现,基类与派生类存在的同名函数,且该同名函数的原型在基类和派生类中完全一致(包括返回值类型、函数名、形式参数表),故在编译时无法确定调用的是哪一个成员函数
17. 动态多态性达到的效果:当基类的指针指向基类对象时调用基类中的同名函数,而指向派生类对象时就调用派生类的同名函数,而究竟执行哪一类中的同名函数则要等到运行到这条语句时才能决定
18. 函数重载:要求形式参数在个数、类型、顺序的一个或多个方面有所区别
19. 不可以重载的运算符:. .* :: ?: sizeof
20. 运算符重载不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型
21. 运算符重载的两种方法:用成员函数重载、用友元函数重载
22. 规定使用成员函数重载的运算符:= () [] -> 建议重载为成员函数的运算符:单目运算符、复合赋值运算符
23. 纯虚函数只给出了函数的原型声明而没有具体的实现内容,声明是在虚函数原型的后面赋0
24. 纯虚函数的作用在于基类给派生类提供一个标准的函数原型与统一的接口,为实现动态性打下基础,派生类将根据需要给出纯虚函数的具体实现代码
25. 抽象类包含至少一个纯虚函数,不能生成对象,也不能作为参数类型、函数返回值类型或显式转换的类型,但可以定义抽象类指针或引用来实现动态多态性
26. 抽象类除了必须至少有一个纯虚函数以外,还可以定义普通成员函数或虚函数
二、引用
《C++常见问题及解答》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- 03.安装jdk8作为系统环境
博客为日常工作学习积累总结: 1.安装JDK8 创建安装目录:mkdir /application/java8 解压-安装包自行下载:tar -zxf jdk-8u202-linux-x64.tar. ...
- vue 整体引入 mint-ui 样式失败
当引入Mint-ui 整体css 时 如果出现了这样的错误, 是指找不到对应的Mint-UI 的css :需要从node_modules里寻找 解决方法是在webpack.config.js(有的项目 ...
- @Component注解、@Service注解、@Repository注解、@Controller注解区别
--------------------------------------------------------------------------------------------------- ...
- SQLite学习笔记
参考书籍 <SQLite 权威指南 第二版> Windows获取SQLite 1.主页: www.sqlite.org 2.下载 Precompiled Binaries For Wind ...
- [原创]python高可用程序设计方法
有时候程序上的bug会导致程序引发诸如段错误的情况而导致程序异常退出,这时用crond服务来检测,就会有一段时间程序处于不可用的情况,为了增强程序的可用性,我们可以让子进程处理业务,而让主进程检测子进 ...
- springboot 配置二级缓存
springBoot中配置mybatis的二级缓存 2018年01月22日 11:45:37 Ting.Xue(Martin.Xue) 阅读数:5604更多 个人分类: SSM的Spring框架Myb ...
- 利用JSON Schema校验JSON数据格式
最近笔者在工作中需要监控一批http接口,并对返回的JSON数据进行校验.正好之前在某前端大神的分享中得知这个神器的存在,调研一番之后应用在该项目中,并取得了不错的效果,特地在此分享给各位读者. 什么 ...
- Appium(Python)驱动手机Chrome浏览器
手机Chrome浏览器访问淘宝H5与在电脑上访问淘宝H5是一摸一样的: 第一种方法: 直接在电脑Chrome浏览器上打开F12: 第二种方法: 手机连接电脑后, 在手机Chrome浏览器上打开淘宝H5 ...
- 监控系统cpu相关统计信息
背景:需要测试监控各个操作系统平台机器上的cpu相关的各种统计信息 为了方便测试,我写了一个比较通用的shell脚本,目前可以兼容Redhat6+,Redhat7+,其他操作系统没测,可以实时监控机器 ...
- Linux命令应用大词典-第30章 审计系统
30.1 auditctl:控制内核的审计系统 30.2 aureport:生成审计信息报表 30.3 ausearch:搜索审计记录 30.4 autrace:跟踪指定进程 30.5 audit-v ...