p1[num]=p[num];
deletep;
p=p1;
size=size+offset;
}
};
4.定义一个复数类Complex,要求复数类重载“*”(成员函数)和“++”(友元函数)。
classComplex
{
protected:
floata,b;
public:
Complexoperator*(Complexc)
{
Complext;
t.a=a*c.a-.b*c.b;
t.b=a*c.b+b*c.a;
returnt;
}
friendComplexoperator++(Complex&c)
{
c.a++
c.b++
returnc;
}
};
网络复习题三
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码分别填在题干的括号内。
每小题1分,共12分)
1.若在类外有函数调用X:
:
func();则函数func是类X的
(2)函数。
①私有静态成员函数②公有非静态成员函数③公有静态成员函数④友元函数
2.说明内联函数的关键字为(4)。
3virtual②static③enum④inline
3.(3)不是面向对象语言的核心概念
①继承②多态性③类属④封装
4.友元函数没有
(1)。
2this指针②返回类型③函数名④参数
5.说明友元函数的关键字为(3)。
①inline②virtual③friend④define
6.若有Xobj[10];(X为类名),则调用构造函数的次数为(3)次。
①0②1③10④任意
7.说明静态成员函数的关键字为
(2)。
4virtual②static③enum④inline
8.若在类外有函数调用objX.func();则函数func是类X的
(2)函数。
2私有成员函数②公有非静态成员函数③公有静态成员函数④友元函数
9.派生类的成员可以有(4)种不同的被访问的权限。
①1②2③3④4
10.复制初始化构造函数对参数的要求是(3)。
①无特殊要求②指向对象的指针③自己类对象的常引用④对象
11.根类的成员可以有(3)种不同的被访问的权限。
①1②2③3④4
12.以下
(2)没有返回类型,但又有return语句。
①析构函数②类类型转换函数③运算符重载函数④构造函数
二、多项选择题(在每小题的五个备选答案中,选出二个至五个正确的答案,并将其号码分别填在题干的括号内,多选、少选、错选,均无分。
每小题2分,共10分)
1.面向对象的核心概念为(123)。
①数据封装②继承③多态性④模板⑤引用
2.以下(124)可以定义类类型。
①class②union③type④struct⑤define
3.简单成员函数是指声明中不含(234)的函数。
①void②static③volatile④const⑤()
4.可以访问一个类的对象的私有成员的有(123)。
①该类的static成员函数②该类的非static成员函数
③该类的友元函数④main函数⑤该类的派生类的所有成员函数
5.(23)没有参数。
①构造函数②析构函数③类类型转换函数④静态成员函数⑤友元函数
三、名词解释(共10分)
7.类型转换:
一种类型的值转换为另一种类型的值
对象:
一组数据及对该组数据的操作封装而成的实体。
8.抽象类:
包含有至少一个纯虚函数的类。
四、判断分析题(判断正误,将正确的划上“√”,错误的划上“×”,并简述理由。
共16分)
9.基类的公有成员函数在派生类中仍然是公有成员函数。
(×)
基类的公有成员函数在公有派生类中仍然是公有成员函数。
10.static成员的初始化必须在类外进行。
(4分)(√)
11.C++语言中的任何函数都必须函数体,即函数的实现。
(3分)(×)
纯虚函数就可以没有函数体。
12.this指针在类的所有成员函数中都隐含存在。
(4分)(×)
this指针在类的所有成员非static函数中都隐含存在。
五、读程序,得结果(每小题6分,共12分)
1.#include
classA
{
inta;
public:
A(intx=0){a=x;}
voidput(){cout<voidset1(intx,Aobj){obj.a=x;}
voidset2(intx,A&obj){obj.a=x;}
};
main()
{
AobjA(10);
objA.put();
objA.set2(20,objA);
objA.put();
objA.set1(30,objA);
objA.put();
}
答案:
10
20
20
2.#include“iostream.h”
classA
{
public:
A(){cout<<“A()\n”;}
};
classB:
publicA
{public:
B(){cout<<“B()\n”;}
};
classC:
publicB
{
public:
C(){cout<<“C()\n”;}
};
voidmain()
{
BobjB;
CobjC;
}
A()
B()
A()
B()
C()
六、指出下列程序的错误;说明错误的原因;并改正(每小题5分,共10分)
1.#include“iostream.h”
intfunc_name(int&x)
{
returnx;
}
main()
{
inty=1;
func_name(y)=100;
cout<}
错误:
func_name(y)=100;函数调用不能被赋值
改正:
将函数的返回改为引用
2.#include
classA
{
inta;
public:
A(intx){a=x;}
voidset_a(intx=0){a=x;}
voidput(){cout<<”A”<<”a”;}
};
classB:
A
{
inta,b;
public:
B(intx,inty)
{
a=x;b=y;
}
};