B)构造派生类对象时,虚基类的构造函数只被调用一次 C)声明“class B : virtual public A”说明类B为虚基类 D)建立派生类对象时,首先调用虚基类的构造函数
(24)将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是 B
A)不合法的运算符 B)一元运算符 C)无操作数的运算符 D)二元运算符 (25)有如下模板声明: D
template
A)cout>>'A'表达式可输出字符A B)eof()函数可以检测是否到达文件尾 C)对磁盘文件进行流操作时,必须包含头文件fstream
D)以ios_base::out模式打开的文件不存在时,将自动建立一个新文件 27)有如下程序:C #include
Toy(char* _n) { strcpy (name,_n); count++;} ~Toy(){ count--; }
char* GetName(){ return name; } static int getCount(){ return count; } private:
char name[10]; static int count; };
int Toy::count=0; int mail(){
Toy t1(“Snoopy”),t2(“Mickey”),t3(“Barbie”); cout< 运行时的输出结果是 A)1 B)2 C)3 D)运行时出错 (28)有如下程序 B #include A(int i):rl(i) { } void print( ) {cout<<'e'< void print( ) const {cout<<'C'< 16 private: int rl; }; int main(){ A al(2); const A a2(4); al.print(); a2.print(); return 0; } 运行时的输出结果是 A)运行时出错 B)E2-C16- C)C4-C16- 29)有如下程序: D #include char name[20]; public: Name(){ strcpy(name,\cout<<'?'; } Name(char *fname)){ strcpy(name,fname); cout<'?'; } }; int main(){ Name names[3]={Name(“张三”),Name(“李四”)}; Return 0; } 运行此程序输出符号?的个数是 A)0 B)1 C)2 D)3 (30)有如下程序: A #include AA(){ cout<<'1'; } }; class BB: public AA{ int k; public: BB():k(0){ cout<<'2'; } BB(int n):k(n){ cout<<'3';} } int main(){ BB b(4), c; return 0; 17 D)E2-E4- } 运行时的输出结果是 A)1312 D)132 C)32 D)141 (31)有如下程序:B #include ~C1(){ cout<<1; } }; Class C2: public c1{ public: ~c2(){ cout<<2; } }; int main(){ C2 cb2; C1 *cb1; return 0; } 运行时的输出结果是 A)121 B)21 C)211 D)12 (32)有如下程序 D #include class Publication{ //出版物类 char name[30]; public: Publication(char *name=\未知名称\strcpy(this->name,name); } const char * getName()const{ return name; } virtual const char * getType()const{ return \未知类型\}; class Book: public Publication{ //书类 public: Book(char *name): Publication(name){} virtual const char * getType()const{ return \书\}; void showPublication( Publication &p){ cout< int main(){ Book book(\精彩人生\showPublication(book); 18 return 0; } 运行时的输出结果是 A)未知类型:未知名称 B)未知类型:精彩人生 C)书:未知名称 D)书:精彩人生 (33)下列关于运算符重载的描述中,错误的是 C A)::运算符不能重载 B)类型转换运算符只能作为成员函数重载 C)将运算符作为非成员函数重载时必须定义为友元 D)重载[]运算符应完成“下标访问”操作 (34)有如下程序: B #include int s[]={123, 234}; cout< for(int i=0; i<2; i++) { cout< 运行时的输出结果是 A)123 B)***123 C)***123 D)***123 234 234 ***234 234*** (35)有如下类定义 A class A { char *a; public: A():a(0){} A(char *aa){ //把aa所指字符串拷贝到a所指向的存储空间 a= ; strcpy(a,aa); strcpy(a,aa); } ~A() {delete []a;} }; 横线处应填写的表达式是 A)nes char[strlen(aa)+1] B)char[strlen(aa)+1] C)char[strlen(aa)] D)new char[sizeof(aa)-1] 二、填空题(每空2分,共30分) (6)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为 【6】 。 (7)有如下循环语句: For(int i=50; i>20; i-=2) cout< (8)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int *p=a;后, 19 利用指针p也可访问该元素,相应的表达式是 【8】 。 (9)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。 void reverse(int *a, int size){ if(size<2) return; int k=a[0]; a[0]=a[size-1]; a[size-1]=k; reverse(a+1, 【9】 ); } (10)类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。 class Sample{ public: Sample(int data=0); Private: Int data; }; Sample::Sample(int data){ 【10】 } (11)有如下类定义: class Sample{ public: Sample(); ~Sample(); Private: Static int date; }; 将静态数据成员data初始化为0的语句是 【11】 。 ( 12)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。 class Shape{ public: virtual int CalArea()=0; } class Triangle: public Shape{ public: Triangle{int s, int h}: side(s),height(h) {} 【12】 { return side*height/2 ; } private: int side; int height; }; (13)有如下程序: 20