C++经典问题

来源:互联网 发布:oracle sql 双引号 编辑:程序博客网 时间:2024/06/03 18:40
指针和引用的区别?
1.指针不用初始化 但是引用不行,所以引用比指针安全
2.一经引用就不能改变引用关系 但是指针可以改变所指向的对象
3.指针可以指向空 但是引用不能引用空
4.传参的时候 指针传递的是地址 引用传递的是本身(尽量使用引用传参 方式发生拷贝节约时间空间)
5.成员变量里面的引用必须初始化列表中初始化
6.汇编上是一样的
7.指针指向的临时量会释放 引用不会
const
1.C语言中const修饰的量是变量 但是C++中是常量 必须初始化
2.引用内置类型的常量 要加const产生临时量
3.可改变指针能力
const define区别
1.编译处理方式不同
2.安全检查 const在编译时检查类型
3.const只有一份拷贝 define有多份拷贝
4.高线率 没有给const分配内存  保存在符号表中 (编译期常量)
static
1.变量 所有对象共享 类外初始化
2.方法 作用域调用 不依赖对象 没有this 所以不能定义为虚函数 不能调用非静态成员
3.仅本文件可见
4.static 的变量初始化且不为零的在.DATA  否则在.BSS 
5.限制作用域
extern  
1.
2.
C++的重载
1.C中重载符号只有函数名 C++中还包含了参数类型
2.重载的条件:函数名相同参数列表不同 作用域相同
3.继承结构中可以形成重载
什么是纯虚函数?
1.没有函数体且等于0的虚函数
为什么要有纯虚函数/抽象类?
1.抽象类 不能实例化 但是可以有指针和引用 
说说虚函数表什么时候产生,在哪里存放?
1.编译时 存在于.RDATA
构造函数和析构函数能不能成为虚函数,为什么?
1.构造不可以(没有形成对象)析构可以:虚函数表需要依靠vfptr 存在于对象前四个字节
2.继承结构中析构函数 ->虚函数: 派生类在对上的话 基类指针只能析构基类部分 成为虚函数之后析构派生类
C++的多态?
1.一个基类指针指向多个派生类 并通过基类指针访问各个派生类的虚函数