C++笔试题目-带答案Lt
D
姓名:___________ 时间:___________
DCCBB AADAD
一、选择题(1*10=10)
1.如果派生类以proctected方式继承基类,那么原基类的protected和public 成员在派生类的访问性分别是:D
A.public和public B.public和protected
C.protected和public D.protected和protected
解析:通过protected方式继承基类后,原基类的私有成员不可访问,而protected 和public成员均变成protected成员。
答案:D
2.有如下头文件:
int F1();
static int F2();
classs CA
{
public:
int F3();
static int F4();
};
在所描述的函数中,具有隐含this指针的是:C
A.F1 B.F2
C.F3 D.F4
此题考查的是this指针。
this指针式一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当对一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针,然后调用成员函数,每次成员函数存取数据成员时,那么隐含使用this指针。
this指针是指向对象本身的指针,它只存在于类的非静态成员中。f1,f2不是成员函数,不存在隐含指针;f4为静态成员函数,也不含有this指针;含有this指针的函数在调用时按thiscall调用约定调用。
故此题答案为C。
3.派生类的成员函数不能访问基类的:C
A.共有成员和保护成员B.共有成员
C.私有成员D.保护成员
此题考查的是继承的类型。
类的继承方式有公有继承、保护继承和私有继承三种方式。对于公有继承基类中的成员访问属性不变,对于保护和私有继承基类中的成员转换为相应的访问类型。但是如果基类成员的访问属性为private的,那么不能被继承。
故此题答案为C。
4.按照“后进先出〞原那么组织数据的数据结构是B
A.队列B.栈
C.双向链表D.二叉树
答案为B。
5.以下关于虚函数的说明中,正确的选项是:B
A.从虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或者引用调用虚函数D.抽象类中的中的成员函数都是虚函数。
答案为B。
6.Value是个类,value是Value的一个对象。以下以非成员函数形式重载的运算符函数原型中,正确的选项是:A
A.Value operator+(Value v, int i); B.Value operator+(Value v=value, int i);
C.Value operator+(Value v, int=0); D.Value operator+(Value v=value, int i=0);
7.有如下类的定义:
Class MyClass
{
int value;
public:
MyClass(int n):value(n){}
int getValue() const {return value;}
};
那么类Myclass的构造函数的个数是:A
A.1个B.2个
C.3个D.4个
还有默认拷贝构造函数, 应该选B
8.有如下类的定义:
class Constants
{
public:
static double GetPI(void){return 3.14159;}
};
Constants constants;
以下各组语句中,能输出3.14159的是:B
A.cout<<constants->GetPI();和cout<<Constants::GetPI();
B.cout<<constants.GetPI();和cout<<Constants.GetPI();
C.cout<<constants->GetPI();和cout<<Constants->GetPI();
D.cout<<constants.GetPI();和cout<<Constants::GetPI();
9.有如下程序:
#include <iostream>
using namespace std;
class VAC
{
public:
int f() const{return 3;}
int f(){return 5;}
};
int main()
{
VAC v1;
const VAC v2;
cout<<v1.f()<<v2.f();
return 0;
}
运行时的输出结果是:A
A.53 B.35
C.55 D.33
10.有如下类声明:
class Base
{
protected:
int amount;
public:
Base(int n = 0):amount(n){}
int getAmount() const {return amount;}
};
class Derived:public Base
{
protected:
int value;
public:
Derived(int m, int n):value(m),Base(n){}
int getData() const {return value + amount;}
};
x是一个Derived对象,那么以下表达式中正确的选项是:B A.x.value + x.getAmount(); B.x.getData() + x.getAmount(); C.x.getData() – x.amount; D.x.value + x.amount;
二、填空题(8*2=16)
400_ 6 4 4 4 4 return *this _ Dog speak Voice
1.以下中a的值是___400_____
#define AAA 200
#define BBB AAA+100
int a= BBB*2
2. 以下为Windows NT下的32位C++程序,请计算sizeof的值。
char str[] = “Hello〞;
char *p = str ;
int n = 10;
请计算
sizeof (str ) = ____5_____
sizeof ( p ) = ____4___
sizeof ( n ) = ____4____
void Func ( char str[100])
指向类成员函数的指针{
//请计算
sizeof( str ) =___4______
}
void *p = malloc( 100 );
//请计算
sizeof ( p ) =_____4____
3. 补充完整下面的类定义:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论