笔试题(9)
1.什么是常对象?
常对象是指在任何场合都不能对其成员的 值进行修改的对象。
2.静态函数存在的意义?
静态私有成员在类外不能被访问,可通过 类的静态成员函数来访问;
当类的构造函数是私有的时,不像普通类那样 实例化自己,只能通过静态成员函数来调用构造函数。
3.不允许重载的 5 个运算符是哪些?
1. .*(成员指针访问运算符号)
2. ::域运算符
3. Sizeof 长度运算符号
4. ?:条件运算符号
5. .(成员访问符)
4.函数重载是什么意思?它与虚函数的概念 有什么区别?
函数重载是一个同名函数完成不同的功能, 编译系统在编译阶段通过函数参数个数、参数 类型不同,函数的返回值来区分该调用哪一个 函数,即实现的是静态的多态性。
但是记住:
不能仅仅通过函数返回值不同来实现函数重载。而虚函数实现的是在基类中通过使用关键 字 virtual 来申明一个函数为虚函数,含义就 是该函数的功能可能在将来的派生类中定义 或者在基类的基础之上进行扩展,系统只能在 运行阶段才能动态决定该调用哪一个函数,所 以实现的是动态的多态性。它体现的是一个纵 向的概念,也即在基类和派生类间实现。
5.main 函数执行以前,还会执行什么代码?
全局对象的构造函数会在 main 函数之前执行。
6.delete 与 delete []区别:
delete 只会调用一次析构函数,而 delete[] 会调用每一个成员的析构函数。
7. 继承的优缺点。
1、类继承是在编译时刻静态定义的,且可直 接使用,
2、类继承可以较方便地改变父类的实现。
缺点:
1、因为继承在编译时刻就定义了,所以无法 在运行时刻改变从父类继承的实现
2、父类通常至少定义了子类的部分行为,父 类的任何改变都可能影响子类的行为
3、如果继承下来的实现不适合解决新的问题, 则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。
8.解释堆和栈的区别。
栈区(stack)— 由编译器自动分配释放 , 存放函数的参数值,局部变量的值等。
堆(heap)一般由程序员分配释放, 若程序 员不释放,程序结束时可能由 OS 回收 。
