5月11日笔试题总结

单例模式

概念

单例模式就是指一个类只有一个实例,该实例是被所有的程序模块共享。

使用场景

GUI中只有一个鼠标对象,操作系统只有一个窗口管理器等

程序示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//单例模式
class A
{
private:
A() //创建一个私有的构造函数
{
cout<<"A"<<endl; //只被输出一次
}
static A *a; //唯一的类对象
public:
static A * get(){
if(a==NULL){ //判断是否第一次调用
a=new A();
}
return a;
}
};

void main(){
A * p1=A::get();
A *p2=p1->get();
system("pause");
}

输出:

1
A

更多的单例模式的知识可以参考博客:c++单例模式

c语言用:非零整数表示逻辑真,0表示逻辑假

C语言没有BOOL类型变量。boolean类型是C++所独有的,其别名有bool 和 BOOL,都可以定义布尔变量。

函数重载的识别的标准

  • 函数名相同
  • 在类继承中,一个父类的方法要在子类中重载,该方法必须要对子类是可见的
  • 函数的参数个数不同、类型不同
    只要满足上述的几点,该函数就是重载函数。重载函数和返回类型是无关的。但是不能出现只是返回值不同的重载函数,否则会编译出错。错误代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
int f(int a){
cout<<a<<endl;
return 0;
}

float f(int a){

return 0;
}
int main(){
f(10);
f(10);
return 0;
}

上述代码执行,会编译出错

STL中的unordered_map和priority_queue使用的底层数据结构分别hashtable和heap

总结

单例模式是使用最多的设计模式,对于单例模式最基本要掌握它的含义和一个简单的实现例子。对于函数重载,需要知道函数重载的原理和其基本的判断方式。并且我们还需要同时掌握函数重写的含义和用途。

具体的扩展资料: