这种情况从后向前复制
2.STL中容器的实现
3.C++ String类的实现
4.给定N张扑克牌和一个随机函数,设计一个洗牌算法
5.25匹马 5个跑道,每次只能跑5匹,用最少的次数选出最快的前3匹
5.智能指针
6.单例模式
7.如何定义一个只能在堆上(栈上)生成对象的类?
8.struct 字节对齐详解
9.浅谈C++中指针和引用的区别
10.const和define的区别
11.define和inline有什么区别
12.NULL指针、零指针、野指针
13.new和malloc的区别
- malloc/free是C语 的库函数,new/delete是
C++的操作符 - malloc仅仅 来分配内存, 不会执 相应的构
造函数,函数返回值为void*, new会调 相应 的构造函数,返回的是相应对象类型的指针
14.C++中成员函数能够同时用static和const进行修饰?
15. const关键字用法
- 于全局变量,与普通全局变量不同的是。它表明 该变量的作 域仅限于当前cpp 件。因此当其他
cpp 件中同样出现同名的static变量时,他们是不 同的独 的变量
2.静态成员变量不受const成员函数限制,可以被修改。
3.对于不修改成员变量值的函数 般都要声明为是const函数
16.C++四种类型转换
17.C++虚函数
虚函数实现动态绑定,提 程序灵活性
实现动态绑定的两个条件:
- 相应成员函数为虚函数
- 使基类对象的引用或指针进行调用
18.C++ 虚函数表解析
19.C++析构函数为什么要为虚函数
20.访问虚函数和普通函数哪个快?
普通函数更快.普通函数的地址在编译期就已经确定了,调用这个函数只需要直接用对应的地址就可以了.调用虚函数时,首先要找到该对象的地址,然后找到该对象虚函数表指针(VPTR)的位置(为了提高查找速度,通常就是该对象的地址),而对象的构造是要到运行时才开始的,这个虚函数表指针也是在运行时才有的,所以虚函数地址是运行期确定的,找到VPTR后根据其指向的虚函数函数指针表得到具体需要调用的函数的地址,相比于普通函数,这个过程复杂,会比较慢.
21.内联函数、构造函数、静态成员函数可以
是虚函数吗
22.绝不在构造函数或析构函数中调用虚函数
简要结论:
1. 从语法上讲,调用完全没有问题。
2. 但是从效果上看,往往不能达到需要的目的。
Effective 的解释是:
派生类对象构造期间进入基类的构造函数时,对象类型变成了基类类型,而不是派生类类型。
同样,进入基类析构函数时,对象也是基类类型。
所以,虚函数始终仅仅调用基类的虚函数(如果是基类调用虚函数),不能达到多态的效果,所以放在构造函数中是没有意义的,而且往往不能达到本来想要的效果。
23.C++虚继承与其他继承类的sizeof()大小详解
24.C++ 对象的内存布局(上)
25.C++ 对象的内存布局(下)