首页 > IT试题 > 各公司试题 > 软件研发试题 > 金山办公软件C++开发工程师招聘笔试题及答案(8套)

金山办公软件C++开发工程师招聘笔试题及答案(8套)


下载地址: 金山  下载所需:¥15


第一部分

1、请描述C++的如下语法特性和常用场景,并给出代码实例:

l C++ 几种类型转换的区别
答:
1.  dynamic_cast (expression) 在类层次中进行向上转换
2.  const_cast (expression) 用于修改类型的constvolatile属性

举例使用
int a = 6;
const int* pca = &a;
//*pca = 7;//invalid
int *pa = const_castpca;
*pa = 7;//valid,a = 7
3. static_cast (expression)一般的类型转换
4reinterpret_cast (expression) 将操作数对象的比特模型进行重新解释
      举例:
           Struct dat (short a;short b);
           Int ab = 10;
           Dat *p = reinterpret_cast(&ab);
           Cout p->a;
l 关键字explicit
答:阻止不应该允许的经过转换构造函数进行的隐式转换的发生。
举例:
class A
{
public:
A(int n) { num = n; } //普通构造函数
private:
int num;
};
 
class B
{
public:
explicit B(int n) { num = n; } //explicit(显式)构造函数
private:
int num;
};
 
int main()
{
A t1 = 16; //隐式调用其构造函数, 成功
B t2 = 16; //编译错误,不能隐式调用其构造函数
B t3(16); //显示调用成功
return 0;
}
l 虚析构函数
答:基类的指针指向派生类对象,并用基类的指针删除派生类对象
class A {
  public:
  virtual ~A(); // 声明一个纯虚析构函数
};
 
2、改错
请阅读以下代码,并指出以下代码中存在的问题或隐患。提示:程序可能有编译错误。
class Shape
{
    public:

、、、、、、
更多内容请下载附件

下载地址: 金山  下载所需:¥15
下载排行