1、国家二级 C+机试(类和对象)模拟试卷 23及答案与解析 一、选择题 1 下列关于 this指针的描述中,正确的是 ( )。 ( A)类的成员函数都有 this指针 ( B)类的友元函数都有 this指针 ( C)任何与类相关的函数都有 this指针 ( D)类的非静态成员函数都有 this指针 2 有如下程序: #include using namespace std; class Test public: Test() n+=2; Test() n一 =3; static int getNum() return n; private: static int n; ; int Test: n
2、=1; int main() Test*p=new Test; delete p; cout 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; coutgetVal(); delete ob3; cout using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int
3、 getCountOreturn count; private: static int count; ; int MyClass: count=0; int main() MyClass ohj; coutgetPI();和 coutgetPI();和 coutgetPI(); ( D) cout using namespace std; class XA int a; public: static int b; XA(int aa): a(aa)b+; int getA()return a; ; int XA: b=0: int main() XA d1(4), d2(5); cout us
4、ing namespace std; int i=1; class Fun public: static int i; int value()return i-1; int value()constreturn i+1; ; int Fun: i=2; int main() int i=3: Fun fun1; const Fun fun2: return 0: 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是 ( )。 ( A) cout using namespace std; class VAC public; int f() constreturn 3; int f()ret
5、urn 5; ; Int main() VAC v1; constVAC v2; cout using namespace std; class MyClass public: MyClass(int x): Val(x) void Set(int x)val=x; void Print()constcout using namespace std; class A public: A(int i): r1(i) void print() cout using namespace std; class A public: A(int i=0): r1(i) void prim()couta=a
6、; 第 2行 void g(char b)this-b=b; ) 第 3行 char h()constreturn a; 第 4行 ; 编译时没有错误的行是 ( )。 ( A)第 1行 ( B)第 2行 ( C)第 3行 ( D)第 4行 22 有如下类定义: classAA int a; public: int getRef()constreturn&a; int getValueoconstreturn a; void set(int n)consta=n; ) friend void show(AA aa)constcout using namespace std; class Samp
7、le friend long fun(Sample s); public: Sample(long a)x=a; private: long x; ; long fun(Sample s) if(s x #include 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
8、 x*p x+p y*p y); int main() Point p1(3, 4); cout 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; ;
9、int Total(const Car&c, const Boat&b) return c weight+b weight; int main() Car c(10); Boat b(8); cout() const;,所以对于本题来说无参且无返嘲值的常成员函数 show,其正确的函数原型是选项 C)。 【知识模块】 类和对象 19 【正确答案】 D 【试题解析】 函数 listen()作为类 IMS的常成员函数,一般对象 obj1和常对象obj2都可以调用它,而函数 speak()作为 IMS的一般成员函数,则只有一般对象obj1可以调用, 而常对象 obj2调用会产生编译错误。 【知识模块
10、】 类和对象 20 【正确答案】 A 【试题解析】 const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义 const成员函数时,把 const关键字放在函数的参数表和函数体之间。 【知识模块】 类和对象 21 【正确答案】 D 【试题解析】 类 Test中的常成员函数 h()返回数据成员 a的值。 【知识模块】 类和对象 22 【正确答案】 B 【试题解析】 此题考查了常成员函数和友元函数的概念。选 项 A中, getRef()函数的返回值和函数类型不符,故错误; C选项中 set()常成员函数改变了数据成员的值,这是不允许的; D选项中 show()函数被同时定义成友
11、元函数和常成员函数是错误的。 【知识模块】 类和对象 23 【正确答案】 C 【试题解析】 此题考查的是友元函数和递归函数。因为 fun函数是 Sample类的友元函数,所以 fun函数可以直接访问 Sample类对象的私有成员 x。主函数调用fun函数,构造参数为 0 5。当 n小于 2时, fun函数返回 1,其余返回值为n*fun(n-1)。 n取 0 5的值时 fun(n)依次为 1, 1, 2, 6, 24, 120,累加结果为154。 【知识模块】 类和对象 24 【正确答案】 A 【试题解析】 这段程序是正确的,计算 p距离原点的距离。语句 是类 Point的构造函数,在构造函数
12、中给变量 xx和 yy赋初值 0。语句 是计算点 p距原点的距离的函数 distance。语句 是计算点 pl距离原点的距离并输出。 【知识模块】 类和对象 25 【正确答案】 A 【试题解析】 程序中定义了类 car和类 Boat,在两个类中分别定义他们的构造函数和友元函 数衔 end。程序在 vC6 0中编译通过。 【知识模块】 类和对象 26 【正确答案】 C 【试题解析】 考查的是对象数组。选项 A中在建立对象数组时也同样需要调用构造函数;选项 B和 D的类型不匹配, B中不能将指针传给非指针, D中是将非指针传给指针。 【知识模块】 类和对象 27 【正确答案】 C 【试题解析】 在选项 C)中定义了类 MyClass对象数组 arrays2,并用对象MyClass(5)和 MyClass(6)对这个数组中的两个元素赋初值。 【知识模块】 类和对象
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1