面向对象程序设计作业参考答案.docx
面向对象程序设计作业参考答案 习题一 5、分析下面程序运行的结果。 # using namespace std; int main() cout>hour; cin>>minute; cin>>sec; void Time:show_time(void) cout>lengthi; cin>>widthi; cin>>heighti; void calArea() for(int i = 0; i display(); ps+; ps+; ps->display(); ps+; ps+; ps->display(); return 0; 6、阅读下面的程序,分析其执行结果,写出输入结果。 #include using namespace std; class Student public: Student(int n,float s):num(n),score(s) void change(int n ,float s)num = n; score = s; void display()coutdisplay(); p->change(101,; p->display(); return 0; 其他部分仍同第6题的程序。 (4)在(3)的基础上将main函数改为 const Student * p = &stud; 答:有错误。p指针是个常量指针,指向的是一个常对象,故而解决的办法同题(2)。(5)在把main函数第3行改为 Student * const p = &stud; 答:没有错误。p指针是个指针常量,指向stud以后不能再指向其他对象。 习题四 1、定义一个复数类Complex,重载运算符“+”、“=”,“*”,“、”,使之能进行复数的加、减、乘、除。运算符重载函数作为Complex类得成员函数。编程序,分别求两个复数之和、差、积和商。 #include #include using namespace std; class Complex public: Complex(double r=0,double i=0); Complex operator +(const Complex& c); Complex operator -(const Complex& c); Complex operator *(const Complex& c); Complex operator /(const Complex& c); void print() const; private: double real, imag; ; Complex:Complex(double r,double i) real=r; imag=i; Complex Complex:operator +(const Complex& c) double r=real+; double i=imag+; return Complex(r,i); Complex Complex:operator -(const Complex& c) double r=; double i=; return Complex(r,i); Complex Complex:operator *(const Complex& c) double r=real * - imag * ; double i=real * + imag * ; return Complex(r,i); Complex Complex:operator /(const Complex& c) double t = pow,2) + pow,2); double r=real * + imag * ; double i=imag * -real * ; return Complex(r/t,i/t); void Complex:print() const cout<<'('<<real<<','<<imag<<')'<<endl; int main() Complex a(3,2),b(0,3),c; c = a + b; (); c = a - b; (); c = a * b; (); c = a / b; (); return 0; 习题五 7、有以下程序,请完成下面的工作: 阅读程序,写出运行时输出的结果。 #include using namespace std; class A public: A()a = 0; b = 0; A(int i)a = i; b = 0; A(int i, int j)a = i; b = j; void display()cout<<"a="< int a; int b; ; class B : public A public: B()c = 0; B(int i):A(i)c = 0; B(int i, int j):A(i,j)c = 0; B(int i, int j, int k):A(i,j)c = k; void display1() display(); cout<<" c="<<c<<endl; private: int c; ; int main() B b1; B b2(1); B b3(1,3); B b4(1,3,5); (); (); (); (); return 0; 输出结果如下: a=0 b=0 c=0 a=1 b=0 c=0 a=1 b=3 c=0 a=1 b=3 c=5 8、有以下程序,请完成下面的工作: 阅读程序,写出运行时输出的结果。 #include #include using namespace std; class A public: A()cout<<"constrcting A "<<endl; A()cout<<"destrcting A "<<endl; ; class B : public A public: B()cout<<"constrcting B "<<endl; B()cout<<"destrcting B "<<endl; ; class C : public B public: C()cout<<"constrcting C "<<endl; C()cout<<"destrcting C "<<endl; ; int main() C c1; return 0; 输出结果如下: constrcting A constrcting B constrcting C destrcting C destrcting B destrcting A