上海交大c++期末试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 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;