上海交大c++期末试卷

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、选择填空:(每题1分,共15分)

1. 与class sample {enum {SIZE = 10}; int storage[SIZE];};等价的类定义为。

A、class sample {const static int SIZE = 10; int storage[SIZE];};

B、class sample {const int SIZE = 10; int storage[SIZE];};

C、class sample { static const int SIZE = 10; int storage[SIZE];};

D、class sample { int SIZE = 10; int storage[SIZE];};

2.对于类中定义的成员,其默认访问权限为_____。

A、public

B、protected

C、private

D、static

3. 友元运算符obj1+obj2被编译器解释为。

A、operator+(obj1,obj2)

B、+(obj1,obj2)

C、obj2.operator+(obj1)

D、obj1.operator+(obj2)

4. 若要对类Counter中重载的前缀++运算符进行声明,下列选项中正确的是。

A、Counter operator ++() const;

B、Counter operator ++(int);

C、friend Counter operator ++() const;

D、friend Counter operator ++(int);

5. 下列运算符中能够重载成友元函数的是。

A、[]

B、=

C、*

D、()

6. 以下对运算符重载描述正确的是。

A、重载的运算符的参数至少应有一个是类对象

B、重载运算符能够改变运算符的的优先级别

C、重载运算符能够改变运算符的操作个数

D、重载运算符可以有默认的参数

7. 将运算符+重载为类成员函数后,编译系统将程序中的表达式C1+C2解释为。

A、C1.operator+C2.operator

B、(C1) +C2.operator

C、C1.operator+(C2)

D、operator+(C1,C2)

8. 下列关于虚函数的说明中,正确的是。

A、从虚基类继承的函数都是虚函数

B、虚函数不得是静态成员函数

C、只能通过指针或引用调用虚函数

D、抽象类中的成员函数都是虚函数

A 、私有成员函数

B 、公有成员函数

C 、构造函数

D 、析构函数

10. 在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 。

A 、派生类的对象可以赋给基类的对象

B 、派生类的对象的地址可以赋给指向基类的指针

C 、派生类的对象可以直接访问基类中的成员

D 、派生类的对象可以初始化基类的引用

11.下列对友元关系叙述正确的是 。 A 、不能继承 B 、是类与类的关系

C 、只能是一个类的成员函数与另一个类的关系

D 、只能是一个外部函数和一个类的关系

12. 下面哪种情况不会导致缓冲区的内容被刷新 。

A 、 程序正常结束

B 、缓冲区已满时

C 、使用行结束符endl

D 、使用<<操作时

13.read 函数的功能是从输入流中读取 。

A 、当前字符

B 、一个字符

C 、指定若干字符

D 、一行字符

14.char *str=”Hello, SJTU!”;cout<

A 、Hello, SJTU!

B 、ello, SJTU!

C 、Hello

D 、SJTU

15. 当使用ifstream 定义文件流并打开文件时,文件默认的打开方式是 。

A 、ios::in

B 、ios::out

C 、ios::trunk

D 、ios::binary

二、写出程序段的运行结果:(每题3分,共30分)

(1)

#include class Increment { public: Increment( int c = 0, int i = 1 ); void addIncrement() { count += increment; } void print() const; private: int count; const int increment; };

Increment::Increment( int c, int i ): increment( i ){count = c;}

void Increment::print() const{cout << "count = "<< count <<", increment ="<

int main()

{

Increment value( 10, 5 );

cout << "Before incrementing: ";value.print();

value.addIncrement();

cout << "After increment " << ":";value.print();

return 0;

}

(2)

#include

using namespace std;

class Count {

friend void setX( Count &,int );

public:

Count() { x = 0; }

void print()const {cout << x << endl; } private:

int x;

};

void setX( Count &c, int val ){c.x = val;}

int main()

{

Count counter;

cout << "counter.x after instantiation: ";

counter.print();

cout << "counter.x after call to setx friend function: ";

setX( counter, 8 ); // set x with a friend

counter.print();

return 0;

}

(3)

#include

//Simple Date class

class Date {

public:

Date( int = 1, int = 1, int = 1990 );

void print();

private:

int month;

int day;

int year;

相关文档
最新文档