习题及其解答第5章类与对象5.1选择题第7章1.在下列结构变量的定义中,不正确的是(d)。第8章章第9(a)structemployee(b)struct章第10{charname[20];{charname[20];longcode;longcode;}emp;}emp;{charname[20];(c)structemployee{charname[20];longcode;longcode;};}employee;employeeemp;employeeemp;(d)struct.已知有职工情况结构变量emp定义为:2structemployee{charname[20];longcode;struct{intyear;intmonth;intday;}birth;}emp;(d)。下列对emp的birth正确赋值方法是(a)year=1980;month=5;day=1;(b)birth.year=1980;birth.month=5;birth.day=1;(c)emp.year=1980;emp.month=5;emp.day=1;(d)emp.birth.year=1980;emp.birth.month=5;emp.birth.day=1;。3.假定有以下声明和定义,则下面引用形式错误的是(b)structstudent{intnum;floatscore;03,91}},*p=stu;(a)p->num(b)(p++).num(c)(p++)->num(d)(*p).num4.下列四个运算符中,优先级最低的是(a)。(a)++(b).(c)->(d)()5.若有以下声明和定义,则下列错误的引用是(d)。structworker{intno;charname[20];}w,*p=&w;(a)w.no(b)p->no(c)(*p).no(d)*p.no6.若有以下声明和定义,则下列引用非法的是(d)。structdata{intn;floatscore;data*q;};dataa[3]={1001,87,&a[1],1002,75,&a[2],1003,90,&a[0]};data*p=a;(a)p->n++(b)(*p).n++(c)++p->n(d)*p->n7.关于类和对象不正确的说法是(c)。(a)类是一种类型,它封装了数据和操作(b)对象是类的实例(c)一个类的对象只有一个(d)一个对象必属于某个类8.在类定义的外部,可以被访问的成员有(c)。(a)所有类成员(b)private或protected的类成员(c)public的类成员(d)public或private的类成员9.关于this指针的说法错误的是(a,d)。(a)this指针必须显式说明(b)当创建一个对象后,this指针就指向该对象(c)成员函数拥有this指针(d)静态成员函数拥有this指针10.声明一个类的对象时,系统自动调用(b,d)函数;撤消对象时,系统自动调用(c)函数。(a)成员函数(b)构造函数(c)析构函数(d)复制构造函数11.下面对构造函数的不正确描述是(b)。第11章(a)系统可以提供默认的构造函数(b)构造函数可以有参数,所以也可以有返回值(c)构造函数可以重载(d)构造函数可以设置默认参数12.下面对析构函数的正确描述是(a,c)。(a)系统可以提供默认的析构函数(b)析构函数必须由用户定义(c)析构函数没有参数(d)析构函数可以设置默认参数13.对静态成员的不正确描述是(c,d)。(a)静态成员不属于对象,是类的共享成员(b)静态数据成员要在类外定义和初始化(c)调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针(d)只有静态成员函数可以操作静态数据成员14.下面选项中,不是类的成员函数为(c)。(a)构造函数(b)析构函数(c)友元函数(d)复制构造函数15.下面对友员的错误描述是(d)。(a)关键字friend用于声明友员(b)一个类中的成员函数可以是另一个类的友员(c)友员函数访问对象的成员不受访问特性影响指针访问对象成员this友员函数通过(d)5.2阅读下列程序,写出执行结果4.#include<iostream.h>classA{public:intf1();intf2();voidsetx(intm){x=m;cout<<x<<endl;}voidsety(intn){y=n;cout<<y<<endl;}intgetx(){returnx;}intgety(){returny;}private:intx,y;};intA::f1(){returnx+y;}intA::f2(){returnx-y;}voidmain(){Aa;a.sety(5);a.setx(10);cout<<a.getx()<<'\t'<<a.gety()<<endl;cout<<a.f1()<<'\t'<<a.f2()<<endl;}答案:1051051555.#include<iostream.h>classT{public:T(intx,inty){a=x;b=y;?潣瑵??调用构造函数1.<<endl;cout<<a<<'\t'<<b<<endl;}T(T&d)????潣瑵??调用构造函数2.<<endl;cout<<d.a<<'\t'<<d.b<<endl;}~???潣瑵??调用析构函数.<<endl;}intadd(intx,inty=10){returnx+y;}private:inta,b;};voidmain(){Td1(4,8);Td2(d1);cout<<d2.add(10)<<endl;}答案:调用构造函数1.48调用构造函数2.4820调用析构函数.调用析构函数.6.#include<iostream.h>classT{public:T(intx){a=x;b+=x;};staticvoiddisplay(Tc){cout<<a=<<c.a<<'\t'<<=<<c.b<<endl;}private:inta;staticintb;};intT::b=5;voidmain(){TA(3),B...