C++习题与解答(7)

2025-11-03

D.动态联编只是用来选择虚函数的

9.3 填空题

1.C++语言多态性主要表现在动态联编、 函数 重载和 运算符 重载。 2.运算符重载函数的两种主要方式是 成员 函数和 友元 函数。

3.静态联编支持的多态性称为 静态 多态性,它是在 编译 时进行的;动态联编支持的多态性称为 动态 多态性,它是在 运行 时进行的。

4.虚函数是一种 非静态 成员函数。说明方法是在函数名前加关键字 virtual 。虚函数具有 继承 性,在基类中被说明的虚函数,具有相同说明的函数在派生类中自然是虚函数。

6. 含有 纯虚函数 的类称为抽象类。它不能定义对象,但可以定义 对象指针和 对象引用 。

9.4 分析下列程序的输出结果 1.

#include class Matrix {

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 class A {

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 class A {

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 class B {

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 class A {

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 class A {

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 const double PI=3.1415; class Shape { public: Shape(double i) { r=i; } virtual void Area()=0; virtual void Perimeter()=0; protected: double r; }; class Circle:public Shape { public: Circle(double i):Shape(i) { } void Area() { cout<<\圆的面积是 \ } void Perimeter() { cout<<\圆的周长是 \ } }; class In_Square:public Shape { public: In_Square(double i):Shape(i) { } void Area() { cout<<\圆内接正方形的面积是 \ } void Perimeter() { cout<<\圆内接正方形的周长是 \ }

35


C++习题与解答(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:外线基础施工方案 - 图文

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219