1、A 卷 总12页 第 1 页上 海 交 通 大 学 试 卷( A 卷)( 2013 至 2014 学年第2学期期末考试)班级号_ 学号_ 姓名课程名称 C+(A) 成绩一、 选择填空:(每题1分,共15分)1. 与class sample enumSIZE = 10; int storageSIZE;等价的类定义为 。A、class sample const static int SIZE = 10; int storageSIZE;B、class sample const int SIZE = 10;int storageSIZE;C、class sample static constint
2、 SIZE = 10;int storageSIZE;D、class sample int SIZE = 10; int storageSIZE;2对于类中定义的成员,其默认访问权限为_。A、 public B、 protected C、 private D、 static3. 友元运算符obj1+obj2被编译器解释为 。A、operator+(obj1,obj2) B、+(obj1,obj2) C、obj2.operator+(obj1) D、obj1.operator+(obj2)4. 若要对类Counter中重载的前缀+运算符进行声明,下列选项中正确的是 。A、Counter oper
3、ator +() const; B、Counter operator+(int);C、friend Counter operator+() const; D、friendCounter operator+(int);5. 下列运算符中能够重载成友元函数的是 。A、 B、= C、* D、()6. 以下对运算符重载描述正确的是 。A、重载的运算符的参数至少应有一个是类对象 B、重载运算符能够改变运算符的的优先级别C、重载运算符能够改变运算符的操作个数 D、重载运算符可以有默认的参数7. 将运算符+重载为类成员函数后,编译系统将程序中的表达式C1+C2解释为 。A、C1.operator+C2.op
4、erator B、(C1) +C2.operatorC、C1.operator+(C2) D、operator+(C1,C2)8. 下列关于虚函数的说明中,正确的是 。A、从虚基类继承的函数都是虚函数 B、虚函数不得是静态成员函数C、只能通过指针或引用调用虚函数 D、抽象类中的成员函数都是虚函数9. 下列函数中,不能声明为虚函数的是 。A、私有成员函数 B、公有成员函数 C、构造函数 D、析构函数A 卷 总12页 第 2 页10. 在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是 。A、派生类的对象可以赋给基类的对象 B、派生类的对象的地址可以赋给指向基类的指针C、派生类的对象
5、可以直接访问基类中的成员 D、派生类的对象可以初始化基类的引用11下列对友元关系叙述正确的是 。A、不能继承 B、是类与类的关系C、只能是一个类的成员函数与另一个类的关系D、只能是一个外部函数和一个类的关系12. 下面哪种情况不会导致缓冲区的内容被刷新 。A、程序正常结束 B、缓冲区已满时 C、使用行结束符endl D、使用class Increment public:Increment( int c = 0, int i = 1 );void addIncrement() count += increment; void print() const;private:int count;con
6、st int increment;Increment:Increment( int c, int i ): increment( i )count= c;void Increment:print() constcoutusing namespace std;class Count friend void setX( Count public:Count() x = 0; void print()const cout/Simple Date classclass Date public:Date( int = 1,int = 1,int = 1990);void print();private:
7、int month;int day;int year;Date:Date( int m, int d,int y)month = m;day = d;year = y;A 卷 总12页 第 4 页void Date:print() cout using namespace std;classTpublic:T( )a=0; b=0;c=0;T( int i,int j,int k) a=i; b=j;c=k;void get( int j=b; k=c;Toperator *(T obj);private:int a,b,c;TT:operator*(T obj) Ttempobj;tempo
8、bj.a=a *obj.a;tempobj.b=b *obj.b;tempobj.c=c *obj.c;return tempobj;int main() Tobj1(1,2,3),obj2( 5,5,5),obj3;int a,b,c;obj3=obj1 *obj2;obj3.get( a, b, c);coutA 卷 总12页 第 5 页class Sample int n;public:Sample();Sample(int m)n=m;int return n;void disp() coutclass Sampleprivate: int x;public: Sample()x=0;
9、void disp()coutusingnamespacestd;classbase intx;public:base(inti)x=i;voiddispbase()coutusing namespace std;classA public:virtual void func1()cout func1();obj - func2();return 0;(9)#include usingnamespacestd;classBase inti;public:Base(intn)coutusingnamespacestd;templateclassATx;public:A(Txx):x(xx)Tfn
10、()returnx*x*x;voidmain() Aa1(3);Aa2(1.1);coutusingnamespacestd;classAinta;public:A(intx)a= x; cout func();return0;输出结果:a=1B constructorfunc calledB destructorAdestructor(2)#include usingnamespacestd;intmain(void) charch;out(“data.txt“);if(!out)cerrch)cout, 其中包含构造函数、重载下标运算符函数和复制构造函数,要求该下标运算可以作为赋值语句的左
11、值。3. (15分) 设计一个抽象类Shape, 包含计算面积的函数area。在Shape类的基础上派生三角形类Triangle和矩形类Rectangle。定义函数total_area,用于求不同形状的图形面积总和。要求运行下列测试程序时,能得到相应的执行结果。#include using namespace std;int main() Triangle t(2.4,2);Rectangle r(1.3,2);cout t.area() endl;cout r.area() endl;Shape*shapes2 =cout total_area(shapes, 2) endl;return 0;输出结果:2.42.65A 卷 总12页 第 12 页