通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
以下程序的执行结果是()。
#include<iostream.h> class TestClass2 { public: TestClass2(){}; TestClass2(int i,int j); void printb(); private: int a,b; }; class TestClass1 { public: TestClass1(){} TestClass1(int i,int j); void printa(); private: TestClass2 c; }; TestClass1::TestClass1(int i,int j):c(i,j) {} void TestClass1::printa() { c.printb(); } TestClass2::TestClass2(int i,int j) { a=i; b=j; } void TestClass2::printb() { cout<<"a="<<a<<" "<<"b="<<b<<endl; } void main() { TestClass1 m(7,9); m.printa(); }
a=7,b=8
a=8,b=7
a=7,b=9
a=8,b=9
第2题
下面程序的输出结果为()。
#include<iostream.h> class TestClass { public: TestClass(){val++;}; static int val; }; int TestClass::val=0; void main() { TestClass cs1; cout<<cs1.val<<""; TestClass cs2; TestClass cs3,cs4; cout<<cs2.val<<endl; }
03
13
14
24
第3题
下面程序的运行结果是()。
#include<iostream> using namespace std; class TestClass { static int n; public: TestClass() { n++; } static int test() { for(int i=0;i<4;i++)n++; return n; } }; int TestClass::n=0; int main() { cout<<TestClass::test()<<" "; TestClass c1,c2; cout<<TestClass::test()<<endl; return 0; }
4,10
4,6
0,6
0,4
第4题
下列关于成员函数特征的描述中,错误的是()。
成员函数一定是内联函数
成员函数可以重载
成员函数可以设置参数的默认值
成员函数可以是静态的
第5题
有如下程序,执行后的输出结果是()。
#include<iostream> using namespace std; class Test{ public: Test(){n+=2;} ~Test(){n-=3;} static int getNum(){return n;} private: static int n; }; int Test::n=1; int main() { Test*p=new Test; delete p; cout<<"n="<<Test::getNum()<<endl; return 0; }
n=0
n=1
n=2
n=3
第6题
假定MyClass为一个类,那么下列的函数说明中,()为该类的析构函数。
void ~MyClass();
~MyClass(int n);
MyClass();
~MyClass();
第7题
下列情况中,不会调用拷贝构造函数的是()。
用一个对象去初始化同一类的另一个新对象时
将类的一个对象赋值给该类的另一个对象时
函数的形参是类的对象,调用函数进行形参和实参结合时
函数的返回值是类的对象,函数执行返回调用时
第8题
类MyClass的定义如下,若要对value赋值,则下面语句正确的是()。
class MyClass { public: MyClass(){} MyClass(int i){value=new int(i);} int*value; };
MyClass my; my.value=10;
MyClass my; *my.value=10;
MyClass my; my.*value=10;
MyClass my(10);
第9题
若有如下程序,程序运行后的输出结果是()。
#include<iostream> using namespace std; int s=0; class sample { static int n; public: sample(int i) { n=i; } static void add() { s+=n; } }; int sample::n=0; int main() { sample a(2),b(5); sample::add(); cout<<s<<endl; return 0; }
2
5
7
3
第10题
有如下程序,该程序运行后的输出结果是()。
#include<iostream> using namespace std; class sample { private: int x,y; public: sample(int i,int j) { x=i; y=j; } void disp() { cout<<"disp1"<<endl; } void disp()const { cout<<"disp2"<<endl; } }; int main() { const sample a(1,2); a.disp(); return 0; }
disp1
disp2
disp1disp2
程序编译时出错
第11题
有如下类的定义,横线处的语句是()。
class TestClass { ______ int x,y; public: TestClass(int a=0,int b=0) { x=a; y=b; } static void change() { y=10; x=10; } }
public
private
static
protected
第12题
在函数中,可以用auto、extern、register和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是()。
auto
extern
register
第13题
若要把函数void fun()定义为TestClass的友元函数,则应该在类TestClass的定义中加入的语句是()。
void friend fun()
friend fun()
friend void fun()
TestClass void fun()
第14题
假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。
MyClass(MyClass x);
MyClass(MyClass&x);
MyClass(&x);
MyClass(x);
第15题
关于静态成员的描述中,错误的是()。
静态成员可分为静态数据成员和静态成员函数
静态数据成员定义后必须在类体内进行初始化
静态数据成员初始化不使用其构造函数
静态数据成员函数中不能直接引用非静态成员
第16题
下列关于构造函数的描述中,错误的是()。
构造函数可以设置默认的参数
构造函数在定义类对象时自动执行
构造函数可以是内联函数
构造函数不可以重载
第17题
下面关于构造函数和析构函数的描述中,错误的是()。
析构函数可以声明为虚函数
对虚析构函数的调用可以采用动态联编
一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响
构造函数可以声明为虚函数
第18题
下面程序的输出结果是()。
#include<iostream> #include<math.h> using namespace std; class point { private: double x; double y; public: point(double a,double b) { x=a; y=b; } friend double distances(point a,point b); }; double distances(point a,point b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } int main() { point p1(1,2); point p2(5,2); cout<<distances(p1,p2)<<endl; return 0; }
4
8
16
第19题
有以下程序,执行后的输出结果是()。
#include<iostream> using namespace std; class R { public: R(int r1,int r2) { R1=r1; R2=r2; } void print(); void print()const; private: int R1,R2; }; void R::print() { cout<<R1<<","<<R2<<endl; } void R::print()const { cout<<R1<<","<<R2<<endl; } int main() { R a(5,4); const R b(20,52); a.print(); b.print(); return 0; }
5,4
4,5
20,52
52,20
第20题
下列关于this指针的叙述中,正确的是()。
this指针是一个隐含指针,它隐含于类的成员函数中
只有在使用this时,系统才会将对象的地址赋值给this
类的友元函数也有this指针
this指针表示了成员函数当前操作的数据所属的对象
第21题
关于this指针的说法不正确的是()。
不能在程序中修改this指针
this可以给其他指针赋值,但不能修改this指针
静态成员函数中没有this指针
this指针可以被赋值
第22题
有如下程序,若程序的输出结果是:123,则程序中横线处的语句是()。
#include<iostream> using namespace std; int i=1; class Fun { public: static int i; int value(){ return i-1;} int value()const{return i+1;} }; int Fun::i=2; int main() { int i=3; Fun fun1; const Fun fun2; ________; return 0; }
cout<<fun1.value()<<Fun::i<<fun2.value()
cout<<Fun::i<<fun1.value()<<fun2.value()
cout<<fun1.value()<<fun2.value()<<Fun::i;
cout<<fun2.value()<<Fun::i<<fun1.value()
第23题
下列关于对象概念的描述中,不正确的是()。
对象就是C语言中的结构变量
对象代表着正在创建的系统中的一个实体
对象是一个状态和操作(或方法)的封装体
对象之间的信息传递是通过消息进行的
第24题
静态数据成员在()进行初始化。
成员函数列表
类体外
构造函数
成员函数
第25题
在C++中,实现封装性需借助于()。
枚举
类
数组
函数
第26题
下列关于类和对象的叙述中,错误的是()。
一个类只能有一个对象
对象是类的具体实例
类是对某一类对象的抽象
类和对象的关系是一种数据类型与变量的关系
第27题
有以下程序,在横线应添加()。
#include<iostream> using namespace std; class TestClass { public: TestClass (int n){number=n;} ________//拷贝构造函数 ~TestClass (){} private: int number; }; TestClass fun(TestClass p) { TestClass temp(p); return temp; } int main() { TestClass obj1(10),obj2(0); TestClass obj3(obj1); obj2=fun(obj3); return 0; }
TestClass (TestClass &other){number=other.number;}
TestClass (TestClass other){number=other.number;}
TestClass (TestClass &other){number;}
TestClass (&other){number=other.number;}
第28题
下述静态数据成员的特征中,错误的是()。
说明静态数据成员时前面要加修饰符static
静态数据成员要在类体外进行初始化
引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
静态数据成员不是所有对象所共用的
第29题
类的析构函数的作用是()。
一般成员函数
类的初始化
对象的初始化
释放由对象所占用的资源
第30题
类MyClass的定义如下:
class MyClass { public: MyClass(){value=0;} SetVariable(int i){value=i;} private: int value; };
则对下列语句序列正确的描述是()。
MyClassp,my; p=&my; 是把对象my赋值给指针变量p
语句MyClassp, my; 会调用两次MyClass的构造函数
对语句*p.SetVariable(5)的调用是正确的
语句p->SetVariable(5)与语句my.SetVariable(5)等价
第31题
有如下程序,运行时输出的结果是()。
#include<iostream> using namespace std; class A{ public: static int a; void init(){a=1;} A(int a=2){init(); a++;} }; int A::a=0; A obj; int main(){ cout<<obj.a; return 0; }
0
1
第32题
()提供了类对外部的接口,私有成员是类的内部实现,而保护成员不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。
公有成员
私有成员
私有成员函数
保护成员
第33题
在下面的定义中,错误的语句是()。
class Sample { public: Sample(int val); //① ~Sample(); //② private: int a=2.5; //③ Sample(); //④ };
①②③④
②
③
①②③
第34题
假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。
MyClass(MyClass*x);
第35题
下面对静态数据成员的描述中,正确的是()。
静态数据成员是类的所有对象共享的数据
类的每个对象都有自己的静态数据成员
类的不同对象有不同的静态数据成员值
静态数据成员不能通过类的对象调用
第36题
class MyClass { public: MyClass(int a=0,int b=0) { X=a; Y=b; } void Change() const { X=10; Y=10; } private: ______ int X,Y; };
const
mutable
不需要填入内容
第37题
关于new运算符的下列描述中,错误的是()。
它可以用来动态创建对象和对象数组
使用它创建的对象或对象数组可以通过运算符delete删除
使用它创建对象时要调用构造函数
使用它创建对象数组时必须指定初始值
第38题
任何与类相关的函数都有this指针
类的成员函数都有this指针
类的友元函数都有this指针
类的非静态成员函数才有this指针
第39题
有如下程序,执行上面程序的过程中,构造函数 TestClass() 和 TestClass (const TestClass&x) 被调用的次数分别是()。
#include<iostream.h> using namespace std; class TestClass { public: TestClass (){cout<<"default constructor\n";} TestClass (const TestClass &x){cout<<"copy constructor\n";} }; TestClass userCode(TestClass b){ TestClass c(b);return c;} int main() { TestClass a,d; cout<<"calling userCode\n"; d=userCode(a); return 0; }
2次 3次
3次 2次
都是2次
都是3次
第40题
#include<iostream> using namespace std; class TestClass { public: TestClass(int r1,int r2) { R1=r1; R2=r2; } void print(); void print()const; private: int R1,R2; }; void TestClass::print() { cout<<R1<<","<<R2<<endl; } void TestClass::print()const { cout<<R1<<","<<R2<<endl; } int main() { TestClass a(5,4); const TestClass b(20,52); b.print(); return 0; }
0,0
第41题
静态数据成员是为()的数据。
私有
保护
所有对象共享
类成员
第42题
有类声明: class Foo(int bar); 则Foo类的成员bar是()。
公有数据成员
公有成员函数
私有数据成员
第43题
有如下定义,其中存在语法错误的行是()。
class Foo { public: Foo(int v): value(v) {} //① ~Foo() {} //② private: Foo() {} //③ int value=0; //④ };
①
④
第44题
有如下定义,在标注号码的行中,能被正确编译的是()。
class Test { public: Test() { a=0; c=0; } //① int f(int a) const { this->a =a; } //② static int g() { return a; } //③ void h(int b) { Test::b =b; } //④ private: int a; static int b; const int c; }; int Test::b=0;
第45题
有类定义 class SAMPLE { int n; public: SAMPLE(int i=0){n=i;} void setValue(int n0); }; ,下列关于setValue函数的实现中,正确的是()。
SAMPLE::setValue(int n0) {n=n0;}
void SAMPLE::setValue(int n0) {n=n0;}
void setValue(int n0) {n=n0;}
(int n0) {n=n0;}
第46题
以下关键字不能用来声明类的访问权限的是()。
第47题
下列关于类定义的说法中,正确的是()。
类定义中包括数据成员和函数成员的声明
类成员的缺省访问权限是保护的
数据成员必须被声明为私有的
成员函数只能在类体外进行定义
第48题
如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是()。
public和public
public和protected
protected和public
protected和protected
第49题
下列有关类成员的叙述中,正确的是()。
友元函数是类的成员函数
类成员的默认访问权限是私有的
类成员函数必须声明为公有的
类的静态数据成员不能是常成员
第50题
下列运算函数中,肯定不属于类Value的成员函数的是()。
Value operator+(Value);
Value operator+(Value,Value);
Value operator+(int);
第51题
有如下程序,运行时的输出结果是()。
#include<iostream> #include<cstring> using namespace std; class XCD { char* a; int b; public: XCD(char* aa, int bb) { a=new char[strlen(aa)+1]; strcpy(a, aa); b=bb; } char* Geta() { return a; } int Getb() { return b; } }; int main() { char *p1="abcd",*p2="weirong"; int d1=6,d2=8; XCD x(p1,d1),y(p2,d2); cout<<strlen(x.Geta())+y.Getb()<<endl; return 0; }
12
11
第52题
有如下两个类定义,其中有一个成员变量的定义是错误的,这个变量是()。
class AA{}; class BB { AA v1,*v2; BB v3; int *v4; };
v1
v2
v3
v4
第53题
#include<iostream> using namespace std; class Point { int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1){} int get(){return x+y;} }; class Circle { Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r){} int get(){return center.get()+radius;} }; int main() { Circle c(3,4,5); cout<<c.get()<<endl; return 0; }
9
第54题
若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果X为该类的一个对象,要在类外访问X对象中a的值,正确的访问格式为()。
AA::getA()
X.getA()
X::a
AA::a
第55题
有如下类定义,创建这个类的对象时,数据成员的初始化顺序是()。
class MyClass{ int b; char a; double c; public: MyClass():c(0.0),b(0),a('c'){} };
a,b,c
c,b,a
b,a,c
c,a,b
第56题
第57题
若有如下类声明,执行语句 MyClass a,b[2],*p[2]; 以后,程序的输出结果是()。
class MyClass{ public: MyClass(){cout<<1;} };
111
1111
11111
第58题
建立一个类对象时,系统自动调用()。
析构函数
静态函数
友元函数
第59题
若MyClass是一个类名,且有如下语句序列: MyClass c1,*c2; MyClass *c3=new MyClass; MyClass &c4=c1; ,上面的语句序列所定义的类对象的个数是()。
第60题
要定义一个引用变量p,使之引用类MyClass的一个对象,正确的定义语句是()。
MyClass p=MyClass;
MyClass p=new MyClass;
MyClass p=&new MyClass;
MyClass &p=a;
第61题
下列关于对象初始化的叙述中,正确的是()。
定义对象时不能对对象进行初始化
定义对象之后可以显式地调用构造函数进行初始化
定义对象时将自动调用构造函数进行初始化
在一个类中必须显式地定义构造函数实现初始化
第62题
#include<iostream> using namespace std; class Pair { int m,n; public: Pair(int j,int k):m(j),n(k){} int get(){return m;} int get()const {return m+n;} }; int main() { Pair a(3,5); const Pair b(3,5); cout<<a.get()<<b.get(); return 0; }
33
38
83
88
第63题
有如下类定义,已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是()。
class MyClass{ int x; public: MyClass():x(0),y(0){} int GetX(){return x;} void SetX(int xx){x=xx;} int y; };
obj.X
obj.Y
obj.GetX()
obj.SetX(0)
第64题
#include<iostream> using namespace std; class Point { static int number; public: Point() {number++;} ~Point() {number--;} }; int Point::number=0; void main() { Point *ptr; Point A,B; Point *ptr_point=new Point[3]; ptr=ptr_point; Point C; cout<<Point::number<<endl; delete[] ptr; }
6
第65题
在下列函数原型中,可以作为类AA构造函数的是()。
void AA(int);
int AA();
AA(int)const;
AA(int);
第66题
有如下类定义,若执行语句 Point a(2), b[3], *c[4]; ,则Point类的构造函数被调用的次数是()。
class Point { int x,y; public: Point():x(0),y(0){} Point(int x,int y=0):x(x),y(y){} };
第67题
有如下程序,执行这个程序屏幕上将显示输出()。
#include<iostream> #include<iomanip> using namespace std; class MyClass{ public: MyClass(){cout<<'A';} MyClass(char c){cout<<c;} ~MyClass(){cout<<'B';} }; int main() { MyClass p1,*p2; p2=new MyClass('X'); delete p2; return 0; }
ABX
ABXB
AXB
AXBB
第68题
#include<iostream> using namespace std; class test{ private: int a; public: test() {cout<<"constructor"<<endl;} test(int a) {cout<<a<<endl;} test(const test&test) { a=test.a; cout<<"copy constructor"<<endl; } ~test() {cout<<"destructor"<<endl;} }; int main() { test A(3); return 0; }
constructor
copy constructor
3 destructor
第69题
对于一个类定义,下列叙述中错误的是()。
如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数
如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数
如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数
第70题
有如下程序,程序的输出结果是()。
#include<iostream> using namespace std; class Part{ public: Part(int x=0):val(x) {cout<<val;} ~Part(){cout<<val;} private: int val; }; class Whole{ public: Whole(int x,int y,int z=0):p2(x),p1(y),val(z){cout<<val;} ~Whole(){cout<<val;} private: Part p1,p2; int val; }; int main(){ Whole obj(1,2,3); return 0; }
12321
213312
213
123123
第71题
#include<iostream> using namespace std; class Base{ public: Base(int x=0){cout<<x;} }; class Derived:public Base{ public: Derived(int x=0){cout<<x;} private: Base val; }; int main(){ Derived d(1); return 0; }
01
001
第72题
有如下类定义,则类MyClass的构造函数的个数是()。
class MyClass{ int value; public: MyClass(int n): value(n) {} int getValue()const {return value;} };
第73题
在C++中,编译系统自动为一个类生成缺省构造函数的条件是()。
该类没有定义任何构造函数
该类没有定义任何无参构造函数
该类没有定义任何成员函数
第74题
有如下程序,执行这个程序输出星号(*)的个数为()。
#include<iostream> using namespace std; class Sample{ public: Sample(){} ~Sample(){cout<<"*";} }; int main(){ Sample temp[2],*pTemp[2]; return 0; }
第75题
#include<iostream> using namespace std; class MyClass{ public: MyClass(int i=0){cout<<1;} MyClass(const MyClass&x){cout<<2;} MyClass& operator=(const MyClass&x){cout<<3;return*this;} ~MyClass(){cout<<4;} }; int main(){ MyClass obj1(1),obj2(2),obj3(obj1); return 0; }
112444
11114444
121444
11314444
第76题
#include<iostream> #include<cstring> using namespace std; class XCF{ int a; public: XCF(int aa=0):a(aa){cout<<"1";} XCF(XCF &x) {a=x.a; cout<<"2";} ~XCF() {cout<<a;} int Geta() { return a; } }; int main() { XCF d1(5), d2(d1); XCF *p=new XCF(8); cout<<p->Geta(); delete p; return 0; }
1215588
121855
12185
128512
第77题
#include<iostream> using namespace std; class ONE{ int c; public: ONE():c(0) {cout<<1;} ONE(int n):c(n) {cout<<2;} }; class TWO { ONE one1; ONE one2; public: TWO(int m): one2(m) {cout<<3;} }; int main() { TWO t(4); return 0; }
23
123
第78题
Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是()。
Sample a[2], *p=new Sample;
第79题
#include<iostream> using namespace std; class Toy{ public: 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 main(){ Toy t1("Snoopy"),t2("Mickey"),t3("Barbie"); cout<<<t1.getCount()<<endl; return 0; }
运行时出错
第80题
有如下程序,运行此程序输出符号?的个数是()。
#include<iostream> using namespace std; class Name{ char name[20]; public: Name(){ strcpy(name, "?"); cout<<"?"; } Name(char *fname){ strcpy(name,fname); cout<<"?"; } }; int main(){ Name name[3]={Name("张三"),Name("李四")}; return 0; }
第81题
有如下程序,运行这个程序的输出结果是()。
#include<iostream> using namespace std; class Test{ public: Test(){} Test(const Test& t){cout<<1;} }; Test fun(Test &u){Test t=u;return t;} int main(){Test x,y;x=fun(y);return 0;}
无输出
第82题
若MyClass为一个类,执行 MyClass a[4],*p[5]; 语句时会自动调用该类构造函数的次数是()。
第83题
有如下程序,运行时的输出结果是()。-
#include<iostream> using namespace std; class CD{ public: ~CD() { cout<<"C";} private: char name[80]; }; int main(){ CD a, *b, d[2];return 0;}
CCCC
CCC
CC
C
第84题
#include<iostream> using namespace std; class XA{ int a; public: static int b; XA(int aa):a(aa){b++;} ~XA(){} int get(){return a;} }; int XA::b=0; int main(){ XA d1(2),d2(3); cout<<<d1.get()+d2.get()+XA::b<<endl; return 0; }
第85题
下列关于析构函数的描述中,错误的是()。
析构函数可以重载
析构函数由系统自动调用
每个对象的析构函数只被调用一次
每个类都有析构函数
第86题
构造函数名与类名相同
构造函数可以有返回值
构造函数可以重载
每个类都有构造函数
第87题
若PAT是一个类,则程序运行时,语句 PAT (*ad)[3]; 调用PAT的构造函数的次数是()。
第88题
#include<iostream> using namespace std; class MyClass { public: MyClass () { cout << "*"; } MyClass (MyClass & a) { cout << "#"; } ~MyClass () { cout << "@"; } }; int main(){ MyClass a; Myclass b(a); return 0; }
@@#
#@@
#@*
第89题
#include<iostream> using namespace std; class Monkey{ public: Monkey() {cout<<"M";} Monkey(char n) {cout<<n;} ~Monkey() {cout<<"Y";} }; int main(){ Monkey p1,*p2; p2=new Monkey('X'); delete p2; return 0; }
MYX
MYYY
MXY
MXY Y
第90题
下列关于类成员对象构造函数调用顺序的叙述中,正确的是()。
与它们在初始化列表中的顺序相同
与它们在类中声明的顺序相同
与析构函数的调用顺序相同
顺序不确定
第91题
#include<iostream> #include<cstring> using namespace std; class MyString{ public: char str[80]; MyString(const char* s){strcpy(str,s);} MyString& operator+=(MyString a){ strcat(str,a.str); return *this; } }; ostream& operator<<(ostream& s,const MyString& z){return s<<z.str;} int main(){ MyString x("abc"),y("cde"); cout<<(x+=y)<<endl; return 0; }
abc
cde
abcde
abccde
第92题
有如下头文件,在所描述的函数中,具有隐含的this指针的是()。
int f1(); static int f2(); class MA{ public: int f3(); static int f4(); };
f1
f2
f3
f4
第93题
下列程序段中包含4个函数,其中具有隐含this指针的是()。
int fun1(); class Test{ public: int fun2(); friend int fun3(); static int fun4(); };
fun1
fun2
fun3
fun4
第94题
#include<iostream> using namespace std; class Obj{ static int i; public: Obj(){i++;} ~Obj(){i--;} static int getVal() {return i;} }; int Obj::i=0; void f(){Obj ob2;cout<<ob2.getVal();} int main(){ Obj ob1; f(); Obj *ob3=new Obj;cout<<ob3->getVal(); delete ob3;cout<<Obj::getVal(); return 0; }
232
231
222
221
第95题
#include<iostream> using namespace std; class MyClass{ public: MyClass(){++count;} ~MyClass(){--count;} static int getCount(){return count;} private: static int count; }; int MyClass::count=0; int main(){ MyClass obj; cout<<obj.getCount(); MyClass*ptr=new MyClass; cout<<MyClass::getCount(); delete ptr; cout<<MyClass::getCount(); return 0; }
121
112
第96题
有如下定义,要初始化Point类的静态成员how_many,下划线处应填入的内容是()。
class Point{ private: static int how_many; }; ______ how_many=0;
int
static int
int Point::
static int Point::
第97题
有如下类和对象的定义,下列各组语句中,能输出3.1416的是()。
class Constants{ public: static double getPI(){return 3.1416;} }; Constants constants;
cout<<constants.getPI(); 和 cout<<Constants::getPI();
cout<<constants.getPI(); 和 cout<getPI();
cout<getPI(); 和 cout<<Constants::getPI();
cout<<constants.getPI(); 和 cout<<Constants.getPI();
第98题
若AA为一个类,a为该类的非静态数据成员,在该类的一个成员函数定义中访问a时,其书写格式为()。
a
AA.a
a()
AA:a()
第99题
有如下定义,上述程序段中,错误的语句是()。
cpp class Sample{ public: Sample(int x): ref(x) {} //① private: Sample():ref(0) {} //② static int val=5; //③ const int ref; //④ };
第100题
已知类Myclass的定义如下,其中有编译错误的函数是()。
cpp class MyClass{ public: void function1(MyClass &c){cout<<c.data;} static void function2(MyClass &c){cout<<c.data;} void function3(){cout<<data;} static void function4(){ cout<<data; } private: int data; };
function1
function2
function3
function4
第101题
有如下程序,若程序的输出结果是123,则程序中下划线处遗漏的语句是()。
#include<iostream> using namespace std; class Fun{ public: static int i; int value(){ return i-1;} int value()const{ return i+1;} }; int Fun::i=2; int main(){ int i=3; Fun fun1; const Fun fun2; ________; return 0; }
cout<<fun1.value()<<Fun::i<<fun2.value();
cout<<Fun::i<<fun1.value()<<fun2.value();
cout<<fun2.value()<<Fun::i<<fun1.value();
第102题
#include<iostream> using namespace std; class VAC{ public: int f() const { return 3;} int f() {return 5;} }; int main(){ VAC v1; const VAC v2; cout<<v1.f()<<v2.f(); return 0; }
53
35
55
第103题
有如下程序,其主函数中错误的语句是()。
#include<iostream> using namespace std; class MyClass{ public: MyClass(int x): val(x){} void SetInt x){val=x;} void Print()const{cout<<"val="<<val<<'\t';} private: int val; }; int main(){ const MyClass obj1(10); MyClass obj2(20); obj1.Print(); //语句1 obj2.Print(); //语句2 obj1.Set(20); //语句3 obj2.Set(20); //语句4 return 0; }
语句1
语句2
语句3
语句4
第104题
有如下类定义和变量定义,下列函数调用中错误的是()。
class A{ public: A() { data=0;} ~A() {} int GetData() const { return data;} void SetData(int n) { data=n; } private: int data; }; const A a; A b;
a.GetData() ;
a.SetData (10) ;
b.GetData() ;
b.SetData (10) ;
第105题
#include<iostream> using namespace std; class A { public: A(int i): r1(i) {} void print() {cout<<"E"<<r1*r1<<":";} void print() const {cout<<"C"<<r1*r1<<":";} private: int r1; }; i nt main(){ A a1(2); const A a2(4); a1.print(); a2.print(); return 0; }
E2-C16-
C4-C16-
E2-E4-
第106题
#include<iostream> using namespace std; class A { public: A(int i=0):r1(i){} void print(){cout<<"E"<<r1*r1<<":";} void print() const {cout<<"C"<<r1*r1<<":";} void print(int x){cout<<"P"<<r1*r1*r1<<":";} private: int r1; }; nt main(){ A a1; const A a2(4); a1.print(2); a2.print(); return 0; }
P8-E4
P8-C16
P0-E4
P0-C16
第107题
某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是()。
const void Show();
void const Show();
void Show()const;
void Show(const);
第108题
已知类IMS中两个成员函数的声明为 void listen()const; 与 void speak(); ,另有两个对象的定义为 IMS obj1; 与 const IMS obj2; ,则下列语句中,产生编译错误的是()。
obj1.listen();
obj1.speak();
obj2.listen();
obj2.speak();
第109题
已知函数print()没有返回值,如果在类中将其声明为常成员函数,正确的是()。
void print() const;
const void print();
void const print();
void print(const);
第110题
有如下类定义,编译时没有错误的行是()。
class Test{ char a; const char b; public: Test(char c){a=c;b=c;} //第1行 void f(char a)const{this->a=a;}//第2行 void g(char b){this->b=b;} //第3行 char h() const{return a;} //第4行 };
第1行
第2行
第3行
第4行
第111题
有如下定义,其中的四个函数定义中正确的是()。
class AA{ int a; public: int getRef()const{ return &a; } //① int getValue()const{ return a; } // ② void set(int n)const{ a=n; } //③ friend void show(AA aa)const{ cout<<a; } //④ };
第112题
#include<iostream> using namespace std; class Sample{ friend long fun(Sample s); public: Sample(long a):x(a){} private: long x; }; long fun(Sample s){ if(s.x<2) return 1 ; return s.x*fun(Sample(s.x-1)); } int main(){ int sum=0; for(int i=0;i<6;i++)sum+=fun(Sample(i)); cout<<sum; return 0; }
120
154
34
第113题
有如下程序,下列叙述中正确的是()。
#include<iostream> #include<cmath> using std::cout; class Point{ public: friend double distance(const Point &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; }
程序编译正确
程序编译时语句①出错
程序编译时语句②出错
程序编译时语句③出错
第114题
有如下程序,下列关于程序的描述中,正确的是()。
#include<iostream> using namespace std; class Boat; class Car{ public: Car(int i):weight(i){} friend int Total(const Car &c,const Boat &b); private: int weight; }; class Boat{ public: Boat(int i): weight(i){} friend int Total(const Car &c,const Boat &b); private: int weight; }; int Total(const Car &c,const Boat &b) { return c.weight+b.weight; } i nt main(){ Car c(10); Boat b(8); cout<<"The total weight is "<<Total(c,b)<<endl; return 0; }
第115题
已知类MyClass声明如下,在下列数组定义中正确的是()。
class MyClass { public: MyClass(int d) { data = d;} ~MyClass() {} private: int data; };
MyClass x1[2];
MyClass x2[2]={new MyClass(1),new MyClass(2)};
MyClass* x3[2];
MyClass* x4[2]={MyClass(1),MyClass(2)};
第116题
已知类MyClass的定义如下,下列对MyClass类对象数组的定义和初始化语句中,正确的是()。
class MyClass { int n; public: MyClass(int k): n(k) {} int getValue()const { return n; } };
MyClass arrays[2];
MyClass arrays[2]={MyClass(5)};
MyClass arrays[2]={ MyClass(5),MyClass(6)};
MyClass *arrays=new MyClass[2];
第117题
分析下面程序,该程序的运行结果是()。
#include<iostream> class TestClass{ public: static int m; TestClass() { m++; } TestClass(int n) { m=n; } static void test() { m++; } }; int TestClass::m=0; void main() { TestClass A; TestClass B(3); A.test(); TestClass::test(); cout<<"m="<<B.m<<endl; }
m=3
m=4
m=5
m=6
第118题
下列说法中错误的是()。
公有继承时基类中的public成员在派生类中仍是public的
公有继承时基类中的private成员在派生类中仍是private的
私有继承时基类中的public成员在派生类中是private的
保护继承时基类中的public成员在派生类中是protected的
第119题
#include<iostream> using namespace std; class TestClass{ public: ~TestClass (){cout<<"BASE:";} }; class TestClass1: public TestClass { public: ~TestClass1 (){cout<<"DERIVED:";} } ; int main(){TestClass1 x;return 0;}
BASE
DERIVED
BASEDERIVED
DERIVEDBASE
第120题
有以下定义和程序,以下不合语法的调用语句是()。
#include<iostream.h> class TestClass{ public: void show1() { cout<<"TestClass1"<<endl; } }; class TestClass2:TestClass1{ public: void show2() { cout<<"TestClass2"<<endl; } }; class TestClass3:protected TestClass2{ public: void show3() { cout<<"TestClass3"<<endl; } }; void main() { TestClass1 obj1; TestClass2 obj2; TestClass3 obj3; }
obj1.show1()
obj2.show1()
obj3.show1()
obj2.show2();
第121题
在下面的4个关键字中用来说明虚函数的是()。
Virtual
第122题
#include<iostream> using namespace std; class AA{ int n; public: AA(int k):n(k){} int get(){return n;} int get()const{return n+1;} }; i nt main(){ AA a(5); const AA b(6); cout<<a.get()<<b.get(); return 0; }
57
75
77
第123题
关于函数重载,下列叙述中错误的是()。
重载函数的函数名必须相同
重载函数必须在参数个数或类型上有所不同
重载函数的返回值类型必须相同
重载函数的函数体可以有所不同
第124题
有如下类声明,下面关于setValue成员函数的实现中,正确的是()。
class TestClass{ int n; public: TestClass ( int i=0):n(i){} void setValue (int n0); };
TestClass::setValue(int n0){n=n0;}
void TestClass::setValue(int n0){n=n0;}
void setValue(int n0){n=n0;}
setValue(int n0){n=n0;}
第125题
下面关于常成员函数的说法中正确的是()。
常成员函数不能修改任何的数据成员
常成员函数只能修改一般的数据成员
常成员函数只能修改常数据成员
常成员函数只能通过常对象来调用
第126题
下面关于虚函数的描述中,正确的是()。
基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明
虚函数是非成员函数
虚函数是static类型的成员函数
派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型
第127题
在类中说明的成员可以使用关键字的是()。
cpu
第128题
下列不能作为类的成员的是()。
自身类对象的指针
自身类对象
自身类对象的引用
另一个类的对象
第129题
下列关于抽象类的表述中正确的是()。
派生类必须要实现作为基类的抽象类中的纯虚函数
抽象类的成员函数至少有一个没实现
抽象类不可能用来定义对象
派生类不能成为抽象类
第130题
假定TestClass为一个类,则该类的拷贝构造函数的声明语句为()。
TestClass(TestClass x)
TestClass&(TestClass x)
TestClass(TestClass+x)
TestClass(TestClass&x)
选择题(130题,共计130分)