6.2 笔试真题 & 详解
1、 static_cast与 dynamic_cast的区别。
2、const char * p; char const * p; char * const p; const char const *p; 以上四种表示的不同是什么?
3、手工实现 strcpy 函数,不能使用任何库函数,要求处理 NULL、溢出等异常。
4、下面类的两种不同的构造函数的区别。 Sample::Sample(string name):_name(name){}
Sample::Sample(string name){_name=name;}
5、类继承后成员变量的可见性(三种类型的变量及 public, private类型的继承)。
6、产生继承类实例时构造函数的调用次序(基类包含虚函数,继承类重写了)。
7、空类的系统自动产生的函数(至少写4个), class Sample{ };
8、怎么防止类被继承?对于不能被继承的类,怎么初始化及销毁它的实例?
Session 21、稀疏矩阵存储采用的数据结构及其时间复杂度,并写出插入一个元素的函数。
2、对于给定的一个数字,将其对应的二进制的最右边的1改为 0("turn off")例如给你。14,二进制为1110,函数处理后为1100,对应为12 ,写出实现这个功能的函数。
3、给你了求 fibonacc 数列的递归实现,要求给出优化的函数。
4、多线程互斥锁的使用,不要产生死锁。
5、设计模式题,对于给定的类的继承关系图,根据新的条件修改,图要表现出类间的关系(类间的关系有聚合,继承,泛化等)(is_a has_a等)。
6、五张牌,两红三篮(你看不到颜色),目标是取到红牌。你在第一次取后,组织者从剩余的四张中取走一张黑牌,你现在有两种选择:不换牌和换一次牌,问哪种选择取得红牌的概率大?两种选择不同是什么?
试题 21、static_cast与 dynamic_cast 的区别,一个静态转换,不提供类型检查,不安全;一个提供动态类型检查,运行时检查类型,试探性的转换,比较安全,不是该类型的父类时,返回 NULL指针。
2、const char * p; har const * p;7\ char * const p; const char const *p;以上四种表示的不同是什么? 指向常量字符串的指针,指向常量字符串的指针,字符串指针常量,指向常量字符串的字符指针。
3、手工实现strcpy函数,不能使用任何库函数,要求处理NULL、溢出等异常;
4、下面类的两种不同的构造函数的区别。Sample::Sample(string name):_name(name){} sample::Sample(string name){_name=name;}
解答:+line1 是构造函数初始化列表初始化,line2 是构造函数体内对成员赋值。-初始化列表初始化和构造函数体内初始化的区别主要是在与数据成员的类型。从概念上讲,可以认为构造函数分两个阶段执行:(1)初始化阶段;(2)普通的计算阶段。计算阶段由构造函数体内的所有语句完成。没有在构造函数初始化列表里初始化的成员,使用与初始化变量同样的规则进行初始化。运行该类型的默认构造函数来初始化类类型的数据成员。局部作用域的内臵类型成员不被初始化,全局作用域的成员初始化为有三种成员必须在初始化列表中初始化:没有默认构造函数的类类型成员、const 成员、引用类型成员。
5、类继承后成员变量的可见性(三种类型的变量及 public, private 类型的继承) public 继承:public >> public, protected>>protected, private >> private'
protected 继承:public,protected >> protected, private>>private private 继承:
all >> private.