77范文网 - 专业文章范例文档资料分享平台

C++习题与解答(7)

来源:网络收集 时间:2019-03-11 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

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

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++习题与解答(7)在线全文阅读。

C++习题与解答(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/516576.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: