一、选择题
1. 下列关于对象初始化的叙述中,正确的是( )
A.定义对象的时候不能对对象进行初始化
B.定义对象之后可以显式地调用构造函数进行初始化
C.定义对象时将自动调用构造函数进行初始化
D.在一个类中必须显式地定义构造函数实现初始化
2. 下列关于基类和派生类关系的叙述中,正确的是( )A.每个类最多只能有一个直接基类
B.派生类中的成员可以访问基类中的任何成员
C.基类的构造函数必须在派生类的构造函数体中调用
D.派生类除了继承基类的成员,还可以定义新的成员
3.下列关于赋值运算符 “=” 重载的叙述中,正确的是( )
A.赋值运算符只能作为类的成员函数重载
B.默认的赋值运算符实现了“深层复制”功能
C.重载的赋值运算符函数有两个本类对象作为形参
D.如果己经定义了复制(拷贝) 构造函数,就不能重载赋值运算符
4.下列选项中,正确的C++标识符是( )
A.6_group B.group~6 C.age+3 D. _group_6
5.下列循环语句中有语法错误的是( )
A. int i; for( i=1; i<10; i++)cout<<‘*‘;
B. int i,j; for(i=1, j=0; i<10; i++, j++)cout<<‘*‘;
C. int i=0; for(; i<10; i++)cout<<‘*‘;
D. for(1)cout<<‘*‘;
6.下列定义语句中,错误的是( )
A. int px*; B.char *acp[10];
C.char(*pac)[10]; D.int(*p)();
7.若MyClass为一个类,执行“MyClass a[4], *p[5];”语句时会自动调用该类构造函数的次数是( )
A. 2 B. 5 C.4 D.9
#include<iostream>
#include<cmath>
using std::cout;
class Point{
public:
friend double distance(const Point &p); //p距原点的距离
Point(int xx=0,int yy=0):x (xx),Y(YY){}//①
private:
int x, Y;
};
double distance(const Point &p) { //②
return sqrt(p.x*p.x+p.Y*p.Y);
}
int main(){
Point p1(3,4);
cout<<distance(p1); //③
return 0;
}
A. const int *a =&b; B. const* int a = &b;
C. const int *const a = &b; D. int const* const a = &b;
10.有如下语句序列:char str[10]; cin>>st; 当从键盘输入“I love this game”时,str中的字符串是( ) A."I love this game" B. "I love thi"
C."I love" D. "I"
11.有函数模板声明和一些变量定义如下:
template<class Tl, class T2, class T3>T1 sum(T2, T3);
double dl, d2;
则下列调用中,错误的是( )
A.sum<double, double, double>(dl, d2);
B.sum<double, double>(d1, d2);
C.sum<double>(d1, d2);
D.sum(d1, d2);
12.以下程序段完全正确的是( )
A. int*p; scanf("%d",&p); B. int *p; scanf(“%d”, p);
C. int k, *p=&k; scanf("%d",p); D. int k,*p:; *p= &k; scanf(“%d”, p);
A.int p[4]; B.int **p; C.int *(p[4]); D.int (*p)[4];
14.若要重载+、=、<<、=和[ ]运算符,则必须作为类成员重载的运算符是( )
A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方
C.类的内联函数必须在类体内定义
16. 下面对于友元函数描述正确的是( )
21.如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是( )
A.公有类型 B.私有类型 C.保护类型 D.友元类型
25.抽象基类是指( )
27.以下说法正确的是( )
class A{ public: void f(){ cout<<"A::f().."<<endl; }
}; class B{
public:
void f(){
cout<<"B::f().."<<endl; } void g(){ cout<<"B::g().."<<endl; } }; class C:public A,public B{ public : void g(){ cout<<"C::g().."<<endl; } void h(){ cout<<"C::h().."<<endl; f();// 语句1 } }; int main(){ C obj; obj.f();//语句2 obj.A::f();//语句3 obj.B::f();//语句4 obj.g(); //语句5 system("pause"); return 0; }
则编译时会产生错误的语句有( )
A. 语句1 B. 语句2 C. 语句3 D. 语句4 E. 语句5