D.动态联编只是用来选择虚函数的
9.3 填空题
1.C++语言多态性主要表现在动态联编、 函数 重载和 运算符 重载。 2.运算符重载函数的两种主要方式是 成员 函数和 友元 函数。
3.静态联编支持的多态性称为 静态 多态性,它是在 编译 时进行的;动态联编支持的多态性称为 动态 多态性,它是在 运行 时进行的。
4.虚函数是一种 非静态 成员函数。说明方法是在函数名前加关键字 virtual 。虚函数具有 继承 性,在基类中被说明的虚函数,具有相同说明的函数在派生类中自然是虚函数。
6. 含有 纯虚函数 的类称为抽象类。它不能定义对象,但可以定义 对象指针和 对象引用 。
9.4 分析下列程序的输出结果 1.
#include
public:
Matrix(int r,int c) {
row=r; col=c;
elem=new double[row*col]; }
double & operator ()(int x,int y) { return elem[x*col+y]; } ~Matrix()
{ delete []elem; } void print(int i)
{ cout< double *elem; int row,col; }; void main() { Matrix m(3,4); for(int i=0;i<3;i++) for(int j=0;j<4;j++) m(i,j)=4*i+j; for(i=0;i<3;i++) for(int j=0;j<4;j++) { m.print(4*i+j); cout<<\ \ } cout< 答: 0 1 2 3 4 5 6 7 8 9 10 11 2. #include public: virtual void fun() { cout<<\ } }; 31 class B:public A { void fun() { cout<<\ } }; void ffun(A *pa) { pa->fun(); } void main() { A *pa=new A; ffun(pa); B *pb=new B; ffun(pb); } 答: A::fun() called. B::fun() called. 3. #include public: A() { ver='A'; } virtual void print() { cout<<\ } protected: char ver; }; class B1:public A { public: B1(int i) { info=i;ver='B'; } void print() { cout<<\ private: int info; }; class B2:public A { public: B2(int i) { info=i; } void print() { cout<<\ private: int info; }; class B3:public B1 { public: B3(int i):B1(i) { info=i;ver='C'; } void print() { cout<<\ private: int info; }; void print_info(A *pa) 32 } } } { pa->print(); } void main() { A a; B1 b1(14); B2 b2(88); B3 b3(65); print_info(&a); print_info(&b1); print_info(&b2); print_info(&b3); } 答: The A version A The B1 info: 14 version B The B2 info: 88 version A The B3 info: 65 version C 4. #include public: virtual void fun1() { cout<<\ virtual void fun2() { cout<<\ void fun3() { cout<<\ void fun4() { cout<<\ }; class D:public B { public: void fun1() { cout<<\ void fun2() { cout<<\ void fun3() { cout<<\ void fun4() { cout<<\ }; void main() { B *pb; D d; pb=&d; pb->fun1(); pb->fun2(); pb->fun3(); pb->fun4(); } 答: D::fun1(). D::fun2(). B::fun3(). B::fun4(). 5. } } } } 33 } } } } #include public: A() { cout<<\ } virtual ~A() { cout<<\ } virtual void f1() { cout<<\ } void f2() { f1(); } }; class B:public A { public: B() { f1();cout<<\ } ~B() { cout<<\ } }; class C:public B { public: C() { cout<<\ } ~C() { cout<<\ } void f1() { cout<<\ } }; void main() { A *pa=new C; pa->f2(); delete pa; } 答: In A cons. In A f1(). In B cons. In C cons. In C f1(). In C des. In B des. In A des. 6. #include public: virtual void print()=0; }; class B:public A { public: void print() { cout<<\ } }; class C:public B { 34 public: void print() { cout<<\ } }; void fun(A *pa) { pa->print(); } void main() { A *pa; B b; C c; pa=&b; fun(pa); pa=&c; fun(pa); } 答: In B print(). In C print(). 9.5 编程题 1. 编程求圆、圆内接正方形和圈外切正方形的面积和周长。要求使用抽象类。 答: 编程如下: #include 35 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++习题与解答(7)在线全文阅读。
相关推荐: