c++面经积累<2>
4、类成员初始化方式:列表初始化和赋值初始化
赋值初始化通过在函数体内进行赋值,列表初始化,在构造函数后面加上冒号,使用初始化列表进行初始化。在函数体内进行初始化,是在所有的数据成员被分配内存空间后进行的,而列表初始化是在给数据成员分配内存空间的时候就进行初始化。两者的关系是先后的问题,一个是先分配,在初始化。另外一个是同时。
5、类如何实现只静态分配或者只动态分配
- 建立对象的方式:
- 静态建立:静态建立一个对象,编译器为对象在栈空间上分配内存。
- 动态建立:A *p = new A(),动态建立,在堆上,使用new运算符为对象在堆空间中分配内存。然后调用构造函数构造对象。
- 因为对于前者,将new和delete设置为私有的,后者把构造函数和析构函数设置为protected属性。
6、什么情况会自动生成默认构造函数
- 带有默认构造函数的类成员对象
- 带有默认构造函数的基类
- 带有虚函数的类或i这虚基类的类
7、抽象基类为什么不能创建对象
- 抽象类:带有纯虚函数的类。
- 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出,如果派生类没有对重写虚函数,那么派生类仍然是个抽象类,那么它仍然不能实例化对象。抽象类不能实例化对象。除非派生类实现了所有的纯虚函数。
8、多态
- 相同对象收到不同信息或者不同对象收到相同信息采用不同的行为。c++支持两种多态性,编译型多态和运行时多态。
- 编译型多态通过重载函数实现,运行时多态通过虚函数实现。
- 静态多态(重载和模板)是在编译的时候,就确定调用函数的类型。动态多态(覆盖,虚函数)在运行的时候,才会决定调用哪个函数。运行基类指针指向派生类对象,并调用派生类的函数。
9、c实现c++的继承
#include <iostream>
using namespace std;
//struct默认public
//class默认private
struct A{
virtual void fun(){
cout << "A function" << endl;
}
int a;
};
struct B : A{
virtual void fun(){
cout << "B function" << endl;
}
int b;
};
//函数指针
typedef void (*FUN)();
struct _A{
FUN _fun;
int _a;
};
//B类中包含A类对象。
struct _B{
_A _a;
int _b;
};
void _fA(){
printf("_A:_fun\n");
}
void _fB(){
printf("_B:_fun\n");
}
int main(){
A a;
B b;
A* p1 = &a;
p1->fun();//A function
p1 = &b;
p1->fun();//B function
_A _a;
_B _b;
_a._fun = _fA;
_b._a._fun = _fB;
_A* p2 = &_a;
p2->_fun();//_A:function
p2 = (_A*)&_b;
p2->_fun();//_B:function
;
}
10、c语言编译过程:预处理-->编译-->优化-->汇编-->链接-->可执行文件
c++面经积累<2>的更多相关文章
- 《Effective Java》学习笔记——积累和激励
从一个实际案例说起 国庆长假前一个礼拜,老大给我分配了这么一个bug,就是打印出来的报表数量为整数的,有的带小数位,有的不带,毫无规律. 根据短短的两个多月的工作经验以及猜测,最终把范围缩小到以下这段 ...
- 【知识积累】try-catch-finally+return总结
一.前言 对于找Java相关工作的读者而言,在笔试中肯定免不了遇到try-catch-finally + return的题型,需要面试这清楚返回值,这也是这篇博文产生的由来.本文将从字节码层面来解释为 ...
- 项目积累(三)CSS
公司不是专门做网站的,偶尔会接到客户让修改前端,有时候和让头疼,自己浏览器兼容问题处理不好. 慢慢积累吧. 先贴出来一些前端代码吧,如下: <div class="test" ...
- 【知识积累】SBT+Scala+MySQL的Demo
一.背景 由于项目需要,需要在Sbt+Scala项目中连接MySQL数据库.由于之前使用Maven+Java进行依赖管理偏多,在Sbt+Scala方面也在不断进行摸索,特此记录,作为小模块知识的积累. ...
- 积累一下SQL
开篇先自我检讨一下,写了博客几年以来首次试过连续两个月没出过博文,有客观也有主观原因,但是最近这年里博文数量也越来越少,博文的质量也每况日下.希望自己一直能坚持下来,多写写博文,这月尽量多写几篇来弥补 ...
- Oracle----SQL语句积累 (Oracle 导入 dmp文件)
Oracle----SQL语句积累 (Oracle 导入 dmp文件) Oracle SQL PL 导入dum文件 1.数据库DBA权限: 注意:这个是在cmd命令行中直接输入,不需要进入Oracl ...
- 记一些之前忘记积累的问题(fiddler 学习、XP系统不能上网、XP不能装fiddler、注册表快速找到)
记一些之前忘记积累的问题: fiddler学习:http://www.cnblogs.com/kingwolf_JavaScript/archive/2012/11/07/FiddlerUI.html ...
- python积累
python积累 一.逐渐积累 python逐渐积累 http://www.cnblogs.com/lx63blog/articles/6051526.html python积累_2 http://w ...
- 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据
分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 今天开发找我,说数据库insert不进数据,叫我看一下 他发了一个截图给我 然后我登录上服务器,发现了可疑的地方,而且这个数据库之前 ...
- 【知识积累】BufferedImage类实现图片的切分
一.引言 如何实现图片分割?若有园友用到这个模块,使用Java的BufferedImage类来实现,图片切分也可以作为一个小工具积累起来,以备不时之需. 二.代码清单 package com.lees ...
随机推荐
- Java提高班(六)反射和动态代理(JDK Proxy和Cglib)
反射和动态代理放有一定的相关性,但单纯的说动态代理是由反射机制实现的,其实是不够全面不准确的,动态代理是一种功能行为,而它的实现方法有很多.要怎么理解以上这句话,请看下文. 一.反射 反射机制是 Ja ...
- [ASP.NET] 如何利用Javascript分割檔案上傳至後端合併
最近研究了一下如何利用javascript進行檔案分割上傳並且透過後端.特地記錄一下相關的用法 先寫限制跟本篇的一些陷阱 1.就是瀏覽器的支援了 因為本篇有用到blob跟webworker 在ie中需 ...
- [Go] golang互斥锁mutex
1.互斥锁用于在代码上创建一个临界区,保证同一时间只有一个goroutine可以执行这个临界区代码2.Lock()和Unlock()定义临界区 package main import ( " ...
- C# 给现有PDF文档添加页眉、页脚
概述 页眉页脚是一篇完整.精致的文档的重要组成部分.在页眉页脚处,可以呈现的内容很多,如公司名称.页码.工作表名.日期.图片,如LOGO.标记等.在之前的文章中介绍了如何通过新建一页空白PDF页来添加 ...
- C# /VB.NET操作Word批注(一)—— 插入、修改、删除Word批注
批注内容可以是对某段文字或内容的注释,也可以是对文段中心思想的概括提要,或者是对文章内容的评判.疑问,以及在阅读时给自己或他人起到提示作用.本篇文章中将介绍如何在C#中操作Word批注,主要包含以下要 ...
- JAVA_接口_默认方法&静态方法
1.小结(注意): 1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰 2.接口中,没有构造方法,不能创建对象 3.接口中,没有静态代码块 ...
- Hdu 3001 Travelling 状态DP
题目大意 一次旅游,经过所有城市至少一次,并且任何一座城市访问的次数不能超过两次,求最小费用 每个城市最多访问两次,用状态0,1,2标识访问次数 把城市1~N的状态按照次序连接在一起,就组成了一个三进 ...
- Spring框架基础(上)
spring是开源对轻量级框架 spring核心主要两部分 aop 面向切面编程,扩展功能不是修改源代码实现 aop采用横向抽取机制,取代了传统纵向继承体系重复代码(性能监视.事务管理.安全检查.缓存 ...
- WebUploader点击上传文件选择框会延迟几秒才会显示
accept: { title: 'Images', extensions: 'jpg,jpeg,png', mimeTypes: 'image/*' } 改为 accept: { title: 'I ...
- BZOJ3122: [Sdoi2013]随机数生成器(BSGS)
题意 题目链接 Sol 这题也比较休闲. 直接把\(X_{i+1} = (aX_i + b) \pmod P\)展开,推到最后会得到这么个玩意儿 \[ a^{i-1} (x_1 + \frac{b}{ ...