{Clock old=*this; second++; if (second>=60)
{second%=60;minute++; if (minute>=60)
{minute%=60;hour=(hour+1)$;} }
return old;//函数的返回值 }
int main() {
Clock myClock(23,59,59); cout<<\; myClock.showTime();
cout<<\;
(myClock++).showTime();//调用后置++重载函数并输出增1之前的对象的数据成员值 return 0;}
五、判断题
1.使用内联函数是以增大空间开销为代价的。
2.C++语言中规定:函数返回值的数据类型是由定义函数规定的数据类型所决定的。 3.为了避免嵌套if-else的二义性,C++语言规定:else与其之前最近的未配对的if配对。
4.在C++语言中,实参和与其对应的形参各占用独立的存储单元。 5.在类中,如果不作特别说明,所有成员的访问属性均为私有类型。
6.C++程序中如果一个函数先被调用,后被定义,则应在主调函数中对被调函数进行原型声明。
7.如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即它不起作用。
8.switch语句中default子句的书写位置是任意的。
9.在C++中,编译时的多态性是通过函数和运算符的重载实现的。 10.成员函数不一定是内置函数。
11.内联函数中不可以包括复杂语句,如switch及循环语句等。 12.C++语言规定,函数定义不可嵌套,但函数的调用可以嵌套。 13.友元关系是单向的,不可交换的。
14.C++中引进了类和对象的概念,从而使得C语言发生了质变,即从面向过程变成面向对象。
15.常成员函数只能用来引用数据成员的值,而不允许改变数据成员的值。 16.派生类中公有继承的基类成员的访问权限到派生类保持不变。 17.构造函数可以重载是构造函数的特征。
17.C++语言允许使用友元,但是友元会破环封装性。 19.构造函数在说明对象时自动执行。 20.构造函数可以重载。
21.new运算符不能对动态分配的数组存储区进行初始化。 22.析构函数没有形参,没有返回值,不能重载。 23.已知:int m=10;则int &x=m;是正确的。
24.while循环与do—while循环不完全相同,因为while的循环体可能一次也不执行而do?while语句的循环至少执行一次。
25.构造函数名字和类名相同,构造函数可以带默认参数,可以重载,在创建对象时自动执行。
26.指针变量只有赋值才指向了一个变量。
27.在函数定义中可以没有return语句,也可以有多个return语句。 28.派生类中继承的基类成员的访问权限取决于继承方式。
29.自增运算符(++)和自减运算符(--)只能用于变量,不能用于常量和表达式。 30.在对程序进行编译的过程中,不会发现注释中的拼写错误。 31.如果对静态存储类别的数值变量未赋初值,则默认值为0。 32.C++语言中模板分为函数模板和类模板两种。 33.必须在类定义体外对静态数据成员进行初始化。 34.构造函数和析构函数不可以被继承。
35.在多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
36.对单目运算符重载为友元函数时,说明一个形参;重载为成员函数时,不能显式说明形参。
37.预处理过程是编译过程之前进行的。 38.break语句可以出现在各种循环体中。
六、编程题
1.编写一个程序计算正方体(cube)和圆柱体(cylinder)的体积。 要求:
(1)定义一个抽象类shape,在其中定义求体积的纯虚函数volume()。
(2)抽象类中定义受保护的数据成员radius,可作为正方体的边长或圆柱体的底面圆的半径。
(3)由抽象类派生出要描述的2个类cube和cylinder,在这2个类中要将求体积的函
数实现。
(4)设计一个main()函数,定义一个圆柱体类的对象,并输出圆柱体的体积。 #include
public:
shape(double r) {radius=r;} virtual double volume()=0; protected:
double radius;
};
class cube:public shape {
public:
cube(double r):shape(r){}
double volume(){return radius*radius*radius;}
};
class cylinder:public shape {
public:
cylinder(double r,double h):shape(r){height=h;}
}; int main() {
cylinder c(5,5); shape *p=&c; }
cout<<\; return 0;
double volume(){return PI*radius*radius*height;} double height;
private:
2.设计一个复数类complex,其数据成员包括real(实部)、image(虚部)。 要求:
(1)用成员函数实现以下功能:
? 定义默认函数,复数的实部与虚部初始化为0;
? 定义带参构造函数,复数的实部与虚部用函数的参数初始化;
? 用函数disp()输出复数,输出形式为a+bi(a、b分别为实部和虚部,当b为负数时
输出a-bi);
(2)重载运算符“+”,用于实现两个复数的相加运算。要求将其重载为友元函数。 #include
complex(){real=0;image=0;}
complex(int r,int i){real=r;image=i;} void disp();
friend complex operator+(complex &c1,complex &c2); private:
int real,image; };
void complex::disp()
{ if(real!=0)
cout< { if(real==0) cout<<0< cout<<\; else cout<<\; else cout<<\;} else { if(image==-1) cout<<\; else cout< } complex operator+(complex &c1,complex &c2) { return complex(c1.real+c2.real,c1.image+c2.image);} 该函数也可以如下实现 complex operator+(complex &c1,complex &c2) {complex c; c.real=c1.real+c2.real; c.image=c1.image+c2.image; return c;} 3.编写一个程序实现对n个整数按照从大到小的顺序应用选择法排序。 #include using namespace std; void select_sort(int a[],int n) {int t,i,j,k; for(i=0;i for(j=i+1;j {t=a[i];a[i]=a[k];a[k]=t;} } } int main() { int x[N],i; for(i=0;i cout<<\; for(i=0;i cout<