C++面试中可能考察的基础知识(1)
1 C++中允许函数的嵌套调用,但不允许函数的嵌套定义
2 构建派生类对象时,先调用基类的构造函数,在调用成员对象的构造函数,最后调用派生类构造函数。
3 volatile关键字
volatile提醒编译器其后面定义的变量随时可能发生改变,因此编译后的程序每次需要存储或者读取这个变量的时候,都直接从变量的地址读取数据。如果没有这个关键字,则编译器可能会优化该变量的存取,即从寄存器中读取,如果这个变量由别的程序更新的话,将出现不一致的现象。
4 C++中不能重载的运算符 . .* ?: :: sizeof
只能使用成员函数重载的运算符有:= () [] -> new delete
单目运算符最好重载为成员函数
对于复合的赋值运算符如+=, -=, *=, /=, %=, &=, |=, !=, ~=, <<=, >>=建议重载为成员函数
对于其它运算符,建议重载为友元函数
5 reinterpret_cast:将一种类型的指针转换为另一种类型的指针或整数,以及其相反的行为,类似于C的强制转换,不做任何类型检测,操作的结果是二进制为拷贝
static_cast:允许执行隐式类型转换以及相反的转换操作
dynamic_cast:用于对象的指针或引用,当用于多态类型转换时,允许隐式转换及相反的过程。与static_cast的不同之处,在相反的转换过程中,dynamic_cast会检擦操作的有效性,如果返回的不是被请求的有效完整对象,则返回null,反之,返回这个有效的对象,如果引用返回无效时则会抛出bad_cast的异常。另外,static_cast不能转换有多态的继承和虚继承和非public继承,但dynamic_cast能转换表现为多态的基础和非public继承。还有的差别就是运行时检测,dynamic会花费更多时间。
const_cast:用于操作被转换对象的const熟悉,设置或移除。
6 静态函数和静态变量属于类本身,不与类对象绑定,因此不能使用this指针;在类定义时,不能对对象直接进行初始化;一般成员变量需要在类内进行初始化;静态成员变量必须在类外初始化,静态成员常量在类中初始化。
7 Java不完全算编译型语言,其编译的字节码文件运行时是解释执行的。java和C++的类也不都是静态绑定的,比如C++的虚函数,Java的父类引用子类对象的情况。Java数组也会溢出。
C++面试中可能考察的基础知识(1)的更多相关文章
- Java中实现异常处理的基础知识
Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...
- 守护线程在logback中的使用 - 论基础知识的重要性
守护线程在logback中的使用 先说问题,在java应用中,logback的异步Appender是怎么在主线程结束后,停下来的? 复盘 我在一个logback的测试用例中,写了这样的代码和logba ...
- 《吊打面试官》系列-Redis基础知识
前言Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联网公司面一次拿一次offer的面霸(请允许我使用一下 ...
- [不得不知道系列]Java线程面试你不得不知道的基础知识一
Java内存管理面试指南一 Java基础面试指南一 Java基础面试指南二 Java基础面试指南三 Java基础面试指南四 Java线程面试指南一 Java线程面试指南二 Redis面试指南一 Kaf ...
- react组件在项目中的应用(基础知识)
上图我是定义了5个模块,全部都渲染在一个组件里面.可以先看看我的代码结构 我将Hello文件夹下的index.jsx文件作为父组件,最后渲染在根组件中. 那我们怎么输出这个Hello组件呢?要达到上图 ...
- Kafka面试你不得不知道的基础知识
Java内存管理面试指南一 Java基础面试指南一 Java基础面试指南二 Java基础面试指南三 Java基础面试指南四 Java线程面试指南一 Java线程面试指南二 Redis面试指南一 Kaf ...
- 【Unity】6.1 Unity中的C#脚本基础知识
分类:Unity.C#.VS2015 创建日期:2016-04-16 一.简介 1.常用的C#数据类型 这里简单介绍用Unity开发游戏时,最常用的一些数据类型. (1)基本类型 int.float. ...
- 第11天:JS中变量、字符串基础知识
一.js简介用来制作页面交互效果,提高用户体验. js页面效果:轮播图.选项卡.地图.表单验证javascript是弱变量类型的语言,变量只需要用var来声明.而java要根据变 量类型来声明, in ...
- C++程序员面试题目总结(涉及C++基础、多线程多进程、网络编程、数据结构与算法)
说明:C++程序员面试题目总结(涉及C++基础知识.多线程多进程.TCP/IP网络编程.Linux操作.数据结构与算法) 内容来自作者看过的帖子或者看过的文章,个人整理自互联网,如有侵权,请联系作者 ...
随机推荐
- QHash和QMultiHash使用
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QHash和QMultiHash使用 本文地址:http://techieliang. ...
- BZOJ 1237 配对(DP)
给出两个长度为n的序列.这两个序列的数字可以连边当且仅当它们不同,权值为它们的绝对值,求出这个二分图的最小权值完全匹配.没有输出-1. n<=1e5.用KM会TLE+MLE. 如果连边没有限制的 ...
- 【Visual Installer】如何读取与写入注册表信息
引入:using Microsoft.Win32; (1)读取注册表信息 代码: RegistryKey rsg = null; rsg = Registry.LocalMachine.OpenSub ...
- bzip2 --安装
下载源文件安装包: http://www.bzip.org/downloads.html 解压: tar -xzvf bzip2-1.0.6.tar.gz 进入解压后的目录: cd bzip2-1.0 ...
- 使用Hexo搭建GitHub博客(2018年Mac版)
关于本文 本文仅记录自己学习搭建Hexo博客之时,搭建过程中掉坑的历程总结,对零基础起步的观众朋友可能缺乏某些基础技术的指导,请优先食用下述两篇优质教程: [2018更新]小白独立搭建博客-Githu ...
- centos7安装python-pip(转)
好久没更新博客了............. 来一发................ 在使用centos7的软件包管理程序yum安装python-pip的时候会报一下错误: No package pyt ...
- PID控制算法的C语言实现五 积分分离的PID控制算法C语言实现
在普通PID控制中,引入积分环节的目的主要是为了消除静差,提高控制精度.但在过程的启动.结束或大幅度增减设定时,短时间内系统输出有很大的偏差,会造成PID运算的积分积累,致使控制量超过执行机构可能允许 ...
- bzoj3938 Robot
3938: Robot Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 336 Solved: 112[Submit][Status][Discuss ...
- Codeforces 892 C.Pride
C. Pride time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...
- php使用时间戳保存时间的意义
时间戳记录的是格林尼治时间,使用date格式化的时候会根据你程序设置的不同时区显示不同的时间. 如果使用具体时间,则还需要进行多一步转换.