《C++程序设计》作业7

《C++程序设计》作业7
一、单项选择题(共18小题,36分)
题型得分 30
以下关于抽象类的说法正确的是( )。

(2分)
A. 抽象类至少含有一个静态成员函数
B. 抽象类的成员函数中,不能出现对本类纯虚函数进行调用的语句
C. 抽象类至少含有一个纯虚函数
D. 可以定义抽象类的对象
我的答案:
C
题目得分 2
参考答案:
C
以下说法错误的是( )。假设在公有继承情况下。

(2分)
A. 可以将派生类对象的地址赋值给基类指针
B. 可以将派生类对象赋值给基类对象
C. 可以将派生类对象赋值给基类的引用
D. 可以将基类对象赋值给派生类对象
我的答案:
D
题目得分 2
参考答案:
D
下列关于类继承的说法中,( )是错误的。

(2分)
A. 派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B. 派生类也是基类,但基类不一定具有派生类的全部属性和方法
C. 继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D. 一个基类可以有多个派生类,一个派生类可以有多个基类
我的答案:
A
题目得分 2
参考答案:
A
以下说法中正确的是( )。

(2分)
A. 抽象类的成员函数都是纯虚函数
B. 析构函数可以是虚函数
C. const成员函数中不可以使用this 指针
D. 在虚函数中不能使用this指针
我的答案:
B
题目得分 2
参考答案:
B
设类B是基类A的公有派生类,并有语句:A a1, *pa=&a; B b1, *pb=&b1; 则下列语句中正确的是( )。

(2分)
A. pb = pa;
B. b1 = a1;
C. a1 = b1;
D. *pb = *pa;
我的答案:
C
题目得分 2
参考答案:
C
当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. 友元
我的答案:
B
题目得分 2
参考答案:
B
当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. 友元
我的答案:
A
题目得分 2
参考答案:
A
下列说法正确的是( )。

#include
using namespace std;
class A {
public:
virtual void f() { cout <<“A” << endl; }
};
class B: public A {
private:
void f() { cout << “B”<< endl; }
};
void g(A &a) { a.f(); }
int main() {
B b;
g(b);
}

(2分)
A. 编译正确,输出 A
B. 编译正确,输出 B
C. 编译错误
我的答案:
B
题目得分 2
参考答案:
B
类C2是类C1的派生类,下列说法错误的是( )。

(2分)
A. 若函数f是C1的友元,则f也是C2的友元
B. C1类型的指针可以指向C2的对象
C. 若函数f是C1的虚函数,则f也是C2的成员函数
D. C2的对象可以赋值给C1类型的变量
我的答案:
D
题目得分 0
参考答案:
A
以下说法中正确的是( )。

(2分)
A. 用 new 运算符动态创建对象时,用于初始化该对象的一定是无参数的构造函数
B. 通过赋值号“=”用一个对象对另一个对象进行赋值,就会引发拷贝(复制)构造函数的调用
C. 构造函数和析构函数都可以是虚函数
D. 构造函数中可以调用本类的静态成员函数
我的答案:
D
题目得分 2
参考答案:
D
在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( )。

(2分)
A. 私有成员
B. 公有成员
C. 保护成员
D. 保护成员或私有成员
我的答案:
A
题目得分 2
参考答案:
A
在创建派生类对象时,构造函数的执行顺序是( )。

(2分)
A. 对象成员构造函数、基类构造函数、派生类本身的构造函数
B. 派生类本身的构造函数、基类构造函数、对象成员构造函数
C. 基类构造函数、派生类本身的构造函数、对象成员构造函数
D. 基类构造函数、对象成员构造函数、派生类本身的构造函数
我的答案:
A
题目得分 0
参考答案:
D
不论派生类以何种方法继承基类,都不能使用基类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. public成员和protected成员
我的答案:
B
题目得分 2
参考答案:
B
假设class Y : public X,即类 Y 是类 X 的派生类,则说明一个 Y 类的对象时和删除 Y 类对象时 ,调用构造函数和析构函数的次序分别为( )。

(2分)
A. X,Y; Y,X
B. X,Y; X,Y
C. Y,X; X,Y
D. Y,X; Y,X
我的答案:
A
题目得分 2
参考答案:
A
若类B是从类A派生而来,而语句 p.Do(); 在被多次执行时,有的时候调用的是类A的Do成员函数,有的时候调用的是类B的Do成员函数,那么p的类型可以是( )。

(2分)
A. B
B. A &
C. A
D. A *
我的答案:
A
题目得分 0
参考答案:
B
假设A为抽象类,下列声明( )是正确的。

(2分)
A. A fun(int);
B. A *p;
C. int fun(A);
D. A Obj;
我的答案:
B
题目得分 2
参考答案:
B
在派生类中,重定义一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( )。

(2分)
A. 不同
B. 相同
C. 相容
D. 部分相同
我的答案:
B
题目得分 2
参考答案:
B
当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。

(2分)
A. public成员
B. private成员
C. protected成员
D. 友元
我的答案:
C
题目得分 2
参考答案:
C
二、填空题(共10小题,20分)
题型得分 20
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
void setX(int x) {
this->x = x;
}
int getX() {
return x;
}
private:
int x;
};
class B:virtual public A { };
class C:virtual public A { };
class D:public B, public C { };
int main() {
D d;
d.B::setX(3);
cout << d.A::getX() << d.B::getX() << d.C::getX() <<d.getX();
d.C::setX(4);
cout << d.A::getX() << d.B::getX() << d.C::getX() <<d.getX();
d.A::setX(5);
cout<< d.A::getX() << d.B::getX() << d.C::getX() <<d.getX();
d.setX(6);
cout << d.A::getX() << d.B::getX() << d.C::getX() <<d.getX() << endl;
return 0;
}

(2分)
我的答案:
3333444455556666
题目得分 2
参考答案:
3333444455556666
指出下面代码片段中Derived继承了数据成员x的________个副本。

class Base {
private:
int x;
};
class Base1:virtual public Base {
private:
int y;
};
class Base2:virtual public Base {
private:
int z;
};
class Derived:public Base1, public Base2 {
// …
};

(2分)
我的答案:
1
题目得分 2
参考答案:
1、一
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
void fun() {
cout << “A”;
}
};
class B:public A {
public:
void fun() {
cout << “B”;
}
};
int main() {
B b;
B *pb = &b;
A *pa = &b;
pb->fun();
pa->fun();
return 0;
}

(2分)
我的答案:
BA
题目得分 2
参考答案:
BA
指出下面代码片段中对象obj拥有________个数据成员。

class A {
private:
int x;
protected:
int getX() const;
};
classB:public A {
private:
int y;
};
B obj;

(2分)
我的答案:
2
题目得分 2
参考答案:
2、二、两
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
int x;
A(int x = 100) {
this->x = x;
}
void show() {
cout << x << “#”;
}
};
class B {
public:
int y;
B(int y = 300) {
this->y = y;
}
void show() {
cout << y << “#”;
}
};
class C:public A, public B {
public:
int y;
C(int a, int b, int c):A(a), B(b) {
y = c;
}
void show() {
cout << y << endl;
}
};
int main() {
C c(400, 500, 600);
c.y = 200;
c.A::show();
c.B::show();
c.show();
return 0;
}

(2分)
我的答案:
400#500#200
题目得分 2
参考答案:
400#500#200
指出下面代码片段中对象obj拥有________个数据成员。

class A {
private:
int x;
};
classB:public A {
private:
int y;
};
B obj;

(2分)
我的答案:
2
题目得分 2
参考答案:
2、二、两
指出下面代码片段中对象obj拥有________个数据成员。

class A {
private:
int x;
int y;
};
class B {
private:
int a;
int b;
};
classC:public A, public B {
// …
};
C obj;

(2分)
我的答案:
4
题目得分 2
参考答案:
4、四
下列程序的输出结果是________。

#include
using namespace std;
class A {
public:
A(int x = 0) {
this->x = x;
}
virtual void fun() {
cout << x << endl;
}
private:
int x;
};
class B:public A {
public:
B(int y) : A(100) {
this->y = y;
}
void fun() {
cout << y << endl;
}
private:
int y;
};
int main() {
B b(10);
A *pa = &b;
pa->fun();
return 0;
}

(2分)
我的答案:
10
题目得分 2
参考答案:
10
下列程序的输出结果是________。

#include
using namespace std;
class Base {
public:
Base(int a) {
x = a;
y = 2 * x;
}
int getY() {
return y;
}
protected:
int x;
private:
int y;
};
class A:public Base {
public:
A(int a):Base(a) { }
int getX() {
return x;
}
};
class B:public Base {
public:
B(int a):Base(a) { }
int getX() {
return x;
}
};
class C:public B, public A {
public:
C(int a):A(a + 30), B(a + 100) { }
};
int main() {
C c(100);
cout << c.A::getX() << “#” <<c.B::getX() << “#” << c.A::getY() << “#” << c.B::getY() << endl;
return 0;
}

(2分)
我的答案:
130#200#260#400
题目得分 2
参考答案:
130#200#260#400
指出下面代码片段中Derived继承了数据成员x的________个副本。

class Base {
private:
int x;
};
class Base1:public Base {
private:
int y;
};
class Base2:public Base {
private:
int z;
};
class Derived:public Base1, public Base2 {
// …
};

(2分)
我的答案:
2
题目得分 2
参考答案:
2、二、两
单项选择题,第07套,第01题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第02题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第03题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第04题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第05题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第06题 总分 2 得分 0
详细:
错误 2 0
单项选择题,第07套,第07题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第08题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第09题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第10题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第11题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第12题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第13题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第14题 总分 2 得分 0
详细:
错误 2 0
单项选择题,第07套,第15题 总分 2 得分 0
详细:
错误 2 0
单项选择题,第07套,第16题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第17题 总分 2 得分 2
详细:
正确 2 2
单项选择题,第07套,第18题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第01题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第02题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第03题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第04题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第05题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第06题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第07题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第08题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第09题 总分 2 得分 2
详细:
正确 2 2
填空题,第07套,第10题 总分 2 得分 2
详细:
正确 2 2

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值