} 运行结果: A::A() called. B::B() called. B::~B() called. A::~A() called.
9. #include \class test {
private: int num; float fl; public: test( );
int getint( ){return num;} float getfloat( ){return fl;} ~test( ); };
test::test( ) {
cout << \num=0;fl=0.0; }
test::~test( ) {
cout << \}
void main( ) {
test array[2];
cout << array[1].getint( )<< \}
运行结果:
Initalizing default Initalizing default 0 0
Desdtructor is active Desdtructor is active 10. #include
protected:
int private1; public:
base(int p){private1=p;} };
class derived1:virtual public base
{
public:
derived1(int p1):base(p1){};
int get_private(){return private1;} };
class derived2:virtual public base {
public:
derived2(int p2):base(p2){};
int get_private(){return private1;} };
class derived12:public derived1,public derived2 {
public:
derived12(int p1,int p2,int pb):derived1(p1), base(pb), derived2(p2){}; };
void main() {
derived12 d(10,20,30);
cout< 运行结果: 3030 11. #include T value1, value2; public: pair (T first, T second) {value1=first; value2=second;} T getmax (); }; template T retval; retval = value1>value2? value1 : value2; return retval; } void main () { pair 12. #include static int n; A(){n++;}; ~A(){n--;}; }; int A::n=0; int main(){ A a; A b[3]; A *c=new A; c=&a; cout< 13. #include public: A(){ cout<<\ A(int a) {cout<<\}; class B:public A { public: B(int a){cout<<\}; class C:public B { public: C(int a):B(a){cout<<\}; void main() { C c(2); } 运行结果: A:no para meter B:int parameter C:int parameter 14. #include { int a, b; public: friend int sum(myclass x); void set_ab(int i, int j); }; void myclass::set_ab(int i, int j) { a = i; b = j; } int sum (myclass x) { return x.a + x.b;} void main() { myclass n; n.set_ab (3, 4); cout < 运行结果: 7 四、编程题: 1.编写一个学生和教师数据输入和显示程序,学生数据要求有编号、姓名、班号和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名的输入和显示设计成一个类person,并作为学生数据操作类student和教师数据操作类teacher的基类,学生数据中的班号和成绩的输入和显示在student类中实现,教师数据中的职称和部门的输入和显示在teacher类中实现。最后在主函数中进行该类的测试。 下面给出了基类person的主要成员: (1) 私有成员: ? int no;编号 ? string name;姓名 (2) 公有成员: ? void input();编号和姓名的输入 ? void display();编号和姓名的显示 2.建立一个ARRAY类,求一维数组中各元素的最大值、最小值和平均值。要求如下: (1) 私有成员: ? int data[10]:数组名称 ? int max:元素的最大值 ? int min:元素的最小值 ? float average:各元素的平均值 (2) 公有成员: ? 构造函数ARRAY(int a[10]):初始化成员数组 ? void process():求data数组中的最大值、最小值和平均值 ? void print():输出数组中元素的最大值、最小值和平均值 (3) 在主程序中进行该类的测试。 3.现有Complex类用于描述复数,其定义如下: class Complex{ private: double image; //描述实部 double real; //描述需部 public: Complex (double i=0,double j=0) { real=i; image=j; } }; 在复数类中重载“+”运算符用于完成可以将一个复数和一个复数相加后返回一个复数;重载“-”运算符用于将一个复数的实部和一个实数相减并返回一个复数;重载 “<<”运算符为复数类友员,用于输出复数。重新定义复数类,并在main函数中测试。 4、一个简单的时间类Time,它具有数据成员h、m、s(用来表示当前时间的时、分、秒)和相应的类成员函数。试完成各类成员函数并编制主函数,说明Time类对象,对定义的各成员函数进行调用,以验证它们的正确性。 class Time { private: int h,m,s; public: Time(int h0=0,int m0=0,int s0=0);//构造函数,设置时、分、秒并设置参数默认值 void addSec(int sec); //增加若干秒,sec>0 void addMin(int min); //增加若干分,min>0 void addHour(int hour); //增加若干小时,hour>0 void print( ); //在屏幕上输出有关数据(时:分:秒) }; 注意:对时分秒的增加要涉及到所谓的“进位”处理问题:秒数超过60要“进位”到分,超过60分则要“进位”到时,而时数超过24后要“甩掉”24以上的部分。 5、自定义如下形式的point类,其对象表示平面上的一个点(x,y),通过类成员函数方式对该类重载双目运算符“+”和“^”,用来求出两个对象的和以及两个对象(平面点)的距离。各运算符的使用含义(运算结果)如下所示: (1.2,-3.5)+(-1.5,6)=(-0.3,2.5) (1.2,-3.5)^(-1.5,6)= 9.87623 实现类成员函数,并编制主函数,说明类对象,而后通过类对象实现所定义的相关运算(以验证其正确性)。 class point { private: double x,y; public: point(double x0=0,y0=0) { x=x0;y=y0 ;} point operator+(point pt2); double operator^(point pt2); void display(); }; 6、创建类Block用来描述长方体,私有数据成员length、width、height记录长方体的长、宽、高。要求用成员函数实现以下功能:①成员函数input用来从键盘分别输入长方柱的长、宽、高;②成员函数volume计算长方柱的体积;③成员函数output输出长方柱的体积。 7、有一个日期类Date,它有私有数据y,m,d,此类的对象作为另一个类Person的私有成员,用以描述一个人的姓名,出生日期及性别,编写必要的成员函数后在main函数中进行测试(Date类和Person类中有默认构造函数和析构函数)。 8、定义基类Student,含有私有数据成员num,name,sex,公有成员函数get_value()用于输入数据,display()用于输出数据。定义派生类Student1(从基类公有继承),含有私有数据成员age,addr,设计派生类的成员函数,使程序运行时输入num,name,sex,age,addr的值,程序应输出以上5个数据的值。 9、写一个程序,定义抽象基类Shape,它有三个公有派生类:类Circle用来描述圆形,类Rectangle用来描述矩形,类Triangle用来描述三角形。用虚函数area( )分别计算几种图形的面积,并求它们的和。 10、将file1.txt文件中的大写字母改为小写字母,复制到另一个文件file3.txt中。