笔试面试-c++笔试题1

1.关于C++构造函数,下面说法错误的是()。C

A)构造函数可以被重载。

B)构造函数在创建对象时自动调用。

C)定义派生类时,派生类的构造函数必须包含积基类构造函数。

派生类的构造函数可以选择隐式调用基类的构造函数,如果没有显式提供,会调用基类的默认构造函数。

D)构造函数是public成员.

2.关于继承,下列说法错误的是()C

A)构造基类时应决定使用protected成员还是private成员,继承时将会影响派生类得访问。

B)用private关键字派生类意味着基类的public成员称为派生类的private成员。

C)用protected关键字派生类意味着基类的protected成员称为派生类的private成员。

使用private继承,父类的所有方法在子类中变为private 使用protected继承,父类的protected和public方法在子类中变为protected,privtate方法不变 使用public继承,父类中的方法属性不发生改变

D)多继承使一个类可以继承多个基类的特性。

3.关于析构函数,下列描述错误的是()D

A)当变量超出其说明的作用域时,析构函数将被隐式调用。

B)对全局变量,析构函数在main函数作为退出过程的一部分被调用

C)析构函数的调用次序和构造函数调用次序恰好相反

D)指向对象的指针超出作用域时,析构函数将被隐含调用

指向对象的指针超出作用域并不会自动调用析构函数,只有在调用delete时才会被调用。

4.关于引用和指针,下列说法错误的是()B

A)引用必须被初始化。

B)引用初始化以后可以被改变 不可以被改变

C)指针可以改变所指向的对象。

D)不存在指向空值的引用,但是存在指向空值的指针。

5.一个函数带有参数说明时,则参数的默认值应该在( )中给出B

A)函数定义

B)函数声明

C)函数定义或声明

D)函数调用

6.对于C++中类(class)与结构(struct)的描述正确的是(A)

A)类中的成员默认是private的,但是可以声明为public。

B)结构中不允许定义成员函数,但类中可以定义成员函数。

结构体和类都可以定义成员函数

C)结构实例使用malloc动态创建,类对象使用new操作符动态分配内存

结构体和类使用malloc和new都可以

D)结构和对象都必须使用new创建。

E)结构中不可以存在继承关系,但是类可以存在继承关系。

结构体和类都具有继承关系

F)结构中不可以定义虚函数,但是类中可以定义虚函数。

结构体也可以定义虚函数

结构体和类的异同

7.两个互相独立的类classA和classB,都各自定义了非静态的公有成员函数PublicFunc()和非静态的私有成员函数PrivateFunc();现在要在classA中增加

定义一个成员函数classA::AdditionalPunction(classA a,classB b);则可以在AdditionalPunction(classA x,classB y)的实现部分(函数功能内部)出

现的合法表达式最全的是: D

A)x.PrivateFunc();x.PublicFunc();y.PrivateFunc();y.PublicFunc();

B)x.PrivateFunc();x.PublicFunc();y.PublicFunc();

C)x.PrivateFunc();y.PrivateFunc();y.PublicFunc();

D)x.PublicFunc();y.PublicFunc();

不能访问私有成员函数和属性

8.以下代码输出结果是什么?B

\

#include <iostream>
​
using namespace std;
​
class parent
​
{
​
public:
​
virtual void foo(){cout<<"foo from parent";}
​
void foo1(){cout<<"foo1 from parent";}
​
};
​
class Son : public parent
​
{
​
public:
​
void foo(){cout<<"foo from Son";}
​
void foo1(){cout<<"foo1 from Son";}
​
};
​
int main()
​
{
​
parent *p = new Son();
​
p->foo(); 
​
p->foo1(); 
​
return 0;
​
} 

A.foo from parent foo1 from Son

B.foo from Son foo1 from parent

C.foo from Son foo1 from Son

D.Cannot compile

9.以下代码输出结果是什么?B

#include <iostream>

using namespace std;

class A

{

public: void virtual f(){ cout<<"A"<<endl;}

};

class B : public A

{

public: void virtual f(){cout<<"B"<<endl;}

};

int main()

{

A *pa = new A();

pa->f();

B *pb = (B *)pa;

pb->f();

delete pa,pb;

pa = new B();

pa->f();

pb = (B*)pa;

pb->f();

return 0;

}

A.AABA

B.AABB

C.AAAB

D.ABBA

10.关于类下列哪个描述 是错误的? D

A)类是对象的设计蓝图

B)我们用关键字来创建一个类的结构 class

C)一旦一个类被声明,这个类可以用做一个类型名来声明变量

D)类和结构一样两者没有任何区别 默认访问权限

11.下面关于面向对象技术的叙述哪个是错误的? B

A)面向对象的关键特点是使用软件来对对象编程

B)面向对象的特点和面向过程的特点是一样的重点在于一步步的过程

C)面向对象提供了很多优势,简易化,模块化,易修改性,扩展性等

D)面向对象的关键特点是数据和过程的附加

12.下列关于构造函数的描述中,错误的是()D

A.构造函数可以设置默认的参数

B.构造函数在定义类对象的自动执

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值