(a)t(b)一个地址值(c)java(d)javac++
9.若用数组名作为调用函数的实参,则传递给形参的是(a)。
(a)数组存贮首地址(b)数组的第一个元素值
(c)数组中全部元素的值(d)数组元素的个数
10.在下列选项中,(b,d)是错误的。
(a)gets和puts函数可以输入输出包含空格的字符串
(b)cin不能输入包含空格的字符串
(c)cout不能输出包含空格的字符串
(d)使用赋值运算符可以对字符数组整体赋值
11.下列描述中,错误的是(c)。
(a)输出字符指针就是输出字符串
(b)输出字符指针的间接引用就是输出单个字符
(c)具有相同字符的两个字符串常量相等
(d)两个数组名的比较是地址的比较
12.判断字符串s1和s2是否相等的表达式为(d)。
(a)s1=s2(b)s1==s2
(c)strcpy(s1,s2)==0(d)strcmp(s1,s2)==0
13.判断字符串s1是否大于字符串s2的表达式为(c)。
(a)s1>s2(b)strcmp(s1,s2)==0
(c)strcmp(s1,s2)>0(d)strcmp(s2,s1)>0
5.若有以下声明和定义,则下列错误的引用是(d)。
structworker
{intno;
charname[20];
}w,*p=&w;
(a)w.no(b)p->no(c)(*p).no(d)*p.no
6.若有以下声明和定义,则下列引用非法的是(d)。
structdata
{intn;
floatscore;
data*q;
};
dataa[3]={1001,87,&a[1],1002,75,&a[2],1003,90,&a[0]};
data*p=a;
(a)p->n++(b)(*p).n++(c)++p->n(d)*p->n
7.关于类和对象不正确的说法是(c)。
(a)类是一种类型,它封装了数据和操作(b)对象是类的实例
(c)一个类的对象只有一个(d)一个对象必属于某个类
8.在类定义的外部,可以被访问的成员有(c)。
(a)所有类成员(b)private或protected的类成员
(c)public的类成员(d)public或private的类成员
9.关于this指针的说法错误的是(a,d)。
(a)this指针必须显式说明
(b)当创建一个对象后,this指针就指向该对象
(c)成员函数拥有this指针
(d)静态成员函数拥有this指针
10.声明一个类的对象时,系统自动调用(b,d)函数;撤消对象时,系统自动调用(c)函数。
(a)成员函数(b)构造函数(c)析构函数(d)复制构造函数
11.下面对构造函数的不正确描述是(b)。
(a)系统可以提供默认的构造函数
(b)构造函数可以有参数,所以也可以有返回值
(c)构造函数可以重载
(d)构造函数可以设置默认参数
12.下面对析构函数的正确描述是(a,c)。
(a)系统可以提供默认的析构函数(b)析构函数必须由用户定义
(c)析构函数没有参数(d)析构函数可以设置默认参数
13.对静态成员的不正确描述是(c,d)。
(a)静态成员不属于对象,是类的共享成员
(b)静态数据成员要在类外定义和初始化
(c)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
(d)只有静态成员函数可以操作静态数据成员
14.下面选项中,不是类的成员函数为(c)。
(a)构造函数(b)析构函数(c)友元函数(d)复制构造函数
15.下面对友员的错误描述是(d)。
(a)关键字friend用于声明友员
(b)一个类中的成员函数可以是另一个类的友员
(c)友员函数访问对象的成员不受访问特性影响
(d)友员函数通过this指针访问对象成员
1.在下列运算符中,能重载的是(a,c,d)。
(a)!
(b)sizeof(c)new(d)delete
2.在下列运算符中,不能重载的是(c)。
(a)<=(b)>>(c)&&(d)&=
3.下列关于运算符重载的描述中,(d)是正确的。
(a)可以改变参与运算的操作数个数(b)可以改变运算符原来的优先级
(c)可以改变运算符原来的结合性(d)不能改变原运算符的语义
4.下列函数中,能重载运算符的函数是(b,c)。
(a)成员函数(b)构造函数(c)析构函数(d)友员函数
5.不能用友员函数重载的是(a)。
(a)=(b)==(c)+=(d)!
=
6.下面描述中,错误的是(b)。
(a)只有系统预先定义的运算符才可能被重载
(b)使用类型转换函数不能把一个类转换为另一个类
(c)使用类型转换函数可以把类转换为基本类型
(d)类型转换函数只能定义为一个类的成员函数,不能定义为类的友员函数
1.在c++中,类与类之间的继承关系具有(c)。
(a)自反性(b)对称性(c)传递性(d)反对称性
2.下列关于类的继承描述中,(a,b)是错误的。
(a)派生类可以访问基类的所有数据成员,调用基类的所有成员函数
(b)派生类也是基类,所以基类具有派生类的全部属性和方法
(c)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
(d)一个基类可以有多个派生类,一个派生类可以有多个基类
3.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的(a)。
(a)public成员(b)private成员
(c)protected成员(d)友员
4.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的(b)。
(a)public成员(b)private成员
(c)protected成员(d)友员
5.当一个派生类保护继承一个基类时,基类中的所有公有成员和保护成员成为派生类的(c)。
(a)public成员(b)private成员
(c)protected成员(d)友员
6.不论派生类以何种方式继承基类,都不能使用基类的(b)。
(a)public成员(b)private成员
(c)protected成员(d)public成员和protected成员
7.下面描述中,错误的是(b,c)。
(a)在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
(b)在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
(c)在基类定义的public和protected成员在保护继承的派生类中不可见
(d)在派生类中不可见的成员要变成可访问的需进行访问声明
8.在c++中,不能被派生类继承的函数是(b,c)。
(a)成员函数(b)构造函数
(c)析构函数(d)静态成员函数
9.在创建派生类对象时,构造函数的执行顺序是(d)。
(a)对象成员构造函数、基类构造函数、派生类本身的构造函数
(b)派生类本身的构造函数、基类构造函数、对象成员构造函数
(c)基类构造函数、派生类本身的构造函数、对象成员构造函数
(d)基类构造函数、对象成员构造函数、派生类本身的构造函数
10.当不同的类具有相同的间接基类时,有特点(d)。
(a)各派生类对象将按继承路线产生自己的基类版本
(b)派生类对象无法产生自己的基类版本
(c)为了建立惟一的间接基类版本,应该必须改变类格
(d)为了建立惟一的间接基类版本,应该声明虚继承
1.在C++中,要实现动态联编,必须使用(d)调用虚函数。
(a)类名(b)派生类指针(c)对象名(d)基类指针
2.下列函数中,可以作为虚函数的是(c,d)。
(a)普通函数(b)构造函数(c)成员函数(d)析构函数
3.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(b)。
(a)不同(b)相同(c)相容(d)部分相同
4.下面函数原型声明中,(b)声明了fun为纯虚函数。
(a)voidfun()=0;(b)virtualvoidfun()=0;
(c)virtualvoidfun();(d)virtualvoidfun(){};
5.若一个类中含有纯虚函数,则该类称为(d)。
(a)基类(b)纯基类(c)派生类(d) 抽象类
6.假设Aclass为抽象类,下列声明(a,c,d)是错误的。
(a)Aclassfun(int);(b)Aclass*p;
(c)intfun(Aclass);(d)AclassObj;
7.下面描述中,正确的是(b,d)。
(a)虚函数是没有实现的函数(b)纯虚函数的实现在派生类定义
(c)抽象类是只有纯虚函数的类(d)抽象类指针可以指向不同的派生类
使用虚函数编写程序求球体和圆柱体的体积及表面积。
由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类。
在circle类中定义一个数据成员radius和两个虚函数area()和volume()。
由circle类派生sphere类和column类。
在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。
#includeconstdoublePI=3.14159265;classcircle{public:
circle(doubler){radius=r;}virtualdoublearea(){return0.0;}virtualdoublevolume(){return0.0;}protected:
doubleradius;};classsphere: