习题8
一、单项选择题
- 要是一个类成为抽象类,这个类应具有的条件是( )。
A. 至少有一个纯虚函数 B. 至少有一个虚函数 C. 只含有一个纯虚函数 D. 只含有一个虚函数 - 下面是基类中的成员函数形式,其中为纯虚函数的是( )。
A.virtual void f(void);
B.virtual void f(void) = 0;
C.void f(void) = 0;
D.virtual void f(void) {}
二、分析程序题
- 分析下面程序的输出结果。
#include <iostream>
using namespace std;
class base {
int x;
public:
base(int a) { x = a; cout << "base..." << x << endl; }
base(base &t) { x = t; cout << "base copy..." << x << endl; }
virtual ~base() { cout << "~derived..." << y << endl; }
};
class derived : public base {
int y;
public:
derived(int a, int b) : base(a)
{ y = b; cout << "derived..." << y << endl; }
derived(derived &t) : base(t)
{ y = t.y; cout << "derived..." << y << endl; }
~derived() { cout << "derived..." << y << endl; }
};
void main() {
base *pb = new derived(52, 44);
base a(*pb);
delete pb;
}
- 分析下面程序的输出结果。
#include <iostream>
using namespace std;
class A {
public:
virtual void fa(void) { cout << "A::fa" << endl; }
void fb(void) { cout << "A::fb" << endl; }
};
class B :public A {
public:
void fa(void) { cout << "B::fa" << endl; }
void fb(void) { cout << "B::fb" << endl; }
}
void main() {
A *pa = new A;
A *pb = new B:
pa->fa();
pb->fb();
pb->fa();
pb->A::fa();
((B*)pb)->fb();
}
三、查错题
找出下面程序中的错误,使其输出结果如下:
58
18, 18
源程序如下:
#include <iostream.h>
class base
{
int m;
public:
base(int a) { m = a;}
int Getm() { return m; }
virtual void show() { cout << Getm() << endl; }
};
class derived : public base
{
int n;
public:
derived(int a, int b) : base(a) { n = b;};
virtual void show() { cout << Getm() << "," << n << endl; }
};
void print(base p)
{ p.show(); }
void main() {
base A(58);
derived B(18, 28);
print(A);
print(B);
}
四、完成程序题
仔细阅读下面的程序,根据输出结果分别给出基类base
和派生类derived
类中没有定义的内联函数void display(void)const
。
#include <iostream.h>
class base
{
int i;
int j;
public:
base(int I, int J) : i(I), j(J) { display(); }
int getI(void) { return i; }
int getJ(void) { return j; }
};
class derived : public base
{
int k;
public:
derived(int I, int J, int K) : base(I, J), k(K) { display(); }
//定义display
};
void main(void)
{
base b3(8, 9);
derived d1(10, 20, 5);
}
程序输出:
i=8 i=9
i=10 i=20
i=10 i=20 k=5
i+k=15 j+k=25
历史上的今天:
欢迎来到菜鸟头头的个人博客本文章百度已收录,若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。
2018年6月25日 17:36 沙发
博主你好 选择题怎么没有答案了?
2018年6月25日 19:57 1层
@酷醉醉 这后面的没做了
2018年6月25日 19:59 2层
@头头 那前面做的都是正确的吗?
2018年6月25日 20:00 3层
@酷醉醉 这不一定,但基本都是正确的
2018年6月25日 20:03 4层
@头头 好的 感谢