1、 public A virtual D)class B: virtual public A 8若类A和类B的定义如下:class A int i, j; public: A(int m, int n): i(m), j(n) int Geti() return i; ;class B: int k; B(int m, int n, int u): A(m, n), k(u) void Make() k = i * j; int main() B b(1, 2, 3); return 0;则上述定义中,( ) 是非法的表达式.A)k=i*j; B)int k; C)return i; D)voi
2、d Make( ) 9若有以下程序:#include using namespace std; int a; A() a =10;class A1: A1() a = a + 1; class A2: public A A2() a = a + 2; public A1, public A2 B() void Print() cout a endl; B obj; obj.Print();则程序编译或运行后的输出结果为:A)提示语法错误 B)13 C)12 D)1010在下面的4个关键字中,( ) 是用来说明虚函数的。A)virtual B)public C)protected D)priva
3、te 二、填空题(本大题共5小题,每小题2分,共10分)将正确的答案写在每小题的空格内,错填或不填均无分。1通过类创建( )来要调用构造函数。2假定AB为一个类,则执行“AB a10;”语句时,系统自动调用该类的构造函数的次数为( )。3使用函数模板的方法是先说明函数模板,然后实例化成相应的( )进行调用执行。4拷贝构造函数用它所在类的( )作为参数。5重载运算符“”的函数名为( )。三、程序分析题(本大题共6小题,每小题5分,共30分)给出下面各程序的输出结果。1若有以下程序:class A A(int aa = 0 ) a = aa; cout A(): int b; B(int aa =
4、 0, int bb = 0): A(aa) b = bb;B(): b B x(5), y(6,7);输出结果为:2若有以下程序:class Pointprivate: int x, y; Point(int m = 0, int n = 0) x = m; y = n; void Show() const cout x= x , y= y Show(); delete p;3若有以下程序:class Sample int n; Sample(int i) n = i; s += n; static int s; s int Sample:s = 0; Sample a(2), b(5),
5、c(8); c.Show();4若有以下程序:1:n= n ,; void Print( ) const cout 2: Sample a(10); const Sample b(20); a.Print(); b.Print();5若有以下程序:class Test int x; void Setx(int i) x = i; int Putx() return x; Test *p; Test a3; a0.Setx(5); a1.Setx(6); a2.Setx(7); for( int j = 0; j 3; j+) p = &aj;Putx() cout 6若有以下程序:class
6、Base Base(int x) a = x; void Show() cout 四、完成程序填题(本大题共4个小题,每小题3分,共12分)下面程序都留有空白,请将程序补充完整。1将如下程序补充完整。 static int n; A() n+; static void Show() cout 共有个对象! 1 n = 0; / 为静态数据成员赋初值int main() A obj1, obj2, obj3; A: 2下列程序的输出结果为“2”,试将程序补充完整。 2 Show() const cout 12 A *p = new B; 3将如下程序补充完整。 int m; Base(int a
7、): m(a) virtual void Show() const cout m Derived(int a, int b): Base(a), n(a) void Show() const 3 Show(); / 调用基类的Show() Derived obj(158, 98); Base *p = &obj;4将如下程序补充完整。class Int int i; Int(int x = 0): i(x) () return i; / 类类型转换函数, 将类Int转换为基本类型int Int a;五、编程题(本大题共2小题,第1小题12分,第2小题16分,共28分)1设计一个类Rect,要求
8、如下:(1)该类中的私有数据成员length,width存放它的长和宽,并且设置它们的默认值是0。(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。(3)实现求周长函数GetPerimeter()。2定义一个二维座标类Vector2d, 二个数据成员为double型x, y 为private属性。定义代二个参数的构造函数和一个Show( ) 函数用以输出x, y的值, 另外作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员x和y对应相加。这些成员函数的属性均为public. 请用C+编写此程序, 并编写测试程序进行测试C+面向对象程序设计模拟试题六参考答案1D)
9、 2D) 3A) 4C) 5D)6B) 7D) 8A) 9A) 10A).二、填空题(本大题共5小题,每小题2分,共10分)不写解题过程, 将正确的答案写在每小题的空格内,错填或不填均无分1参考答案:对象2参考答案:103参考答案:模板函数4参考答案:引用5参考答案:operator 5 0 6 7x=1, y=6815n=10,2:n=205,6,76参考答案:21 int A:2 virtual void3 Base:4 operator int1参考程序:class Rect double length, width; Rect(double l = 0, double w = 0):
10、length(l), width(w) void Set(double l, double w) if (length = 50 | width = 50 ) throw 数据不在指定范围(0,50)! length = l; width = w; double GetPerimeter() return 2 * (length + width); try Rect obj(1, 8);周长: obj.GetPerimeter() catch (char *str) 异常信息: str class Vector2d double x, y; Vector2d(double a, double b): x(a), y(b) () Vector2d operator+(Vector2d &obj);Vector2d Vector2d:operator+(Vector2d &obj) return Vector2d(x + obj.x, y + obj.y); Vector2d d1(3.5, 4.5), d2(2.5, 5.5), d3(0.0, 0.0); d3 = d1 + d2; d3.Show();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1