C++复习题。

有助于理解:

  1. .h与.cpp分离
  2. 基类、派生类、抽象类
  3. 多态、纯虚函数
  4. 对象指针、引用
  5. 派生类使用基类的构造函数
  6. 。。。

==================================================================================================

t3.h

#ifndef T3_H_INCLUDED

#define T3_H_INCLUDED

//此程序定义一个Shape类。矩形,圆形从Shape继承。矩形可以计算面积,改变大小,比较大小。改变大小,比较大小。

//继承、虚函数、重载

//protected成员可以被派生类直接访问,private成员不可以被派生类访问

//涉及析构

class Shape{

protected:

float length;

float width;

float radius;

public:

Shape();

Shape(float r);

Shape(float l,float w);

~Shape();

float getRadius();

float getWidth();

float getLength();

virtual void display()=0;

virtual void changeSize(float l,float w)=0;

virtual double getArea()=0;

virtual bool compareSize(Shape* s0)=0; 

};

class Rectangular:public Shape{

public:

Rectangular():Shape(){}

Rectangular(float l,float w):Shape(l,w){}

void display();

void changeSize(float l,float w);

double getArea();

bool compareSize(Shape* s0); 

};

class Circle:public Shape{

public:

Circle():Shape(){}

Circle(float r):Shape(r){}

void display();

void changeSize(float l,float w);

double getArea();

bool compareSize(Shape* s0); 

};

#endif 

==================================================================================================

t3.cpp

#include

#include "t3.h"

using namespace std;

Shape::Shape(){length=0;width=0;radius=0;}

Shape::Shape(float r){radius=r;}

Shape::Shape(float l,float w){length=l;width=w;}

Shape::~Shape(){

cout<<"I was dead."<<endl;

}

float Shape::getRadius(){

return radius;

}

float Shape::getLength(){

return length;

}

float Shape::getWidth(){

return width;

}

//Shape end

void Rectangular::display(){

cout<<"I'm a rectangular."<<endl;

}

void Rectangular::changeSize(float l,float w){

length=length+l;

width=width+w;

}

double Rectangular::getArea(){

return length*width;

}

bool Rectangular::compareSize(Shape* s0){

return this->getArea()>s0->getArea();

}

//Rectangular end

void Circle::display(){

cout<<"I'm a circle."<<endl;

}

void Circle::changeSize(float l,float w=0){

radius=radius+l;

}

double Circle::getArea(){

return 3.14*radius*radius;

}

bool Circle::compareSize(Shape* s0){

return this->getArea()>s0->getArea();

}

//Circle end

int main(){

Rectangular r1=Rectangular();

r1.display();

cout<<"My area
is:"<<r1.getArea()<<endl;

r1.changeSize(5,6);

r1.display();

cout<<"My area
is:"<<r1.getArea()<<endl;

Rectangular r2=Rectangular(3,4);

r2.display();

cout<<"My area
is:"<<r2.getArea()<<endl;

Circle c1=Circle();

c1.display();

cout<<"My area
is:"<<c1.getArea()<<endl;

c1.changeSize(5);

c1.display();

cout<<"My area
is:"<<c1.getArea()<<endl;

Circle c2=Circle(6);

c2.display();

cout<<"My area
is:"<<c2.getArea()<<endl;

Shape *p;

p=&c2;

cout<<r2.compareSize(p)<<endl;;

}

作者:gcy77 发表于2014-3-12 15:16:28 原文链接
阅读:77 评论:0 查看评论

[原]C++程序示例:涉及到抽象类、继承…的更多相关文章

  1. Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,

    36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...

  2. PHP 面向对象:抽象类继承抽象类

    抽象类继承另外一个抽象类时,不用重写其中的抽象方法.抽象类中,不能重写抽象父类的抽象方法.这样的用法,可以理解为对抽象类的扩展. 下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽 ...

  3. PHP面向对象之旅:抽象类继承抽象类(转)

    可以理解为对抽象类的扩展 抽象类继承另外一个抽象类时,不用重写其中的抽象方法.抽象类中,不能重写抽象父类的抽象方法.这样的用法,可以理解为对抽象类的扩展. 下面的例子,演示了一个抽象类继承自另外一个抽 ...

  4. 第一个Mybatis程序示例 Mybatis简介(一)

    在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于“internet”和“aba ...

  5. map reduce程序示例

    map reduce程序示例 package test2; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop. ...

  6. 小程序webview涉及的支付能力、选用绑定多商户支付

    小程序webview涉及的支付能力.选用绑定多商户支付 webview承接页面涉及的支付能力: 仅支持小程序本身支付能力,不支持承接页面内的原支付功能(譬如,webview中嵌入了h5官方商城,经过配 ...

  7. Arduino 入门程序示例之一个 LED(2015-06-11)

    前言 答应了群主写一些示例程序,一直拖延拖延拖延唉.主要还是害怕在各大高手面前班门弄斧……(这也算是给拖延症找一个美好的理由吧),这几天终于下决心要写出来了,各位高手拍砖敬请轻拍啊. 示例程序 首先是 ...

  8. WinDBG调试.NET程序示例

    WinDBG调试.NET程序示例 好不容易把环境打好了,一定要试试牛刀.我创建了一个极其简单的程序(如下).让我们期待会有好的结果吧,阿门! using System; using System.Co ...

  9. [图形学] Chp10 OpenGL三维观察程序示例

    10.10节书中给出了一个程序示例,有一个填充正方形,从侧面的角度观察并画到屏幕上. 图0 这里进一步画出一个立方体,将相机放入立方体中心,旋转相机,达到在立方体中旋转看到不同画面的效果. 步骤: 1 ...

随机推荐

  1. 一篇详细的 Mysql Explain 详解

    一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二.explain输出解释 +—-+— ...

  2. python Tips(不定期更新)

    dictionary sort 1.根据key排序,正向排序 sorted(dic.items(), key=lambda d: d[0]) 2.根据value排序,反向排序 sorted(dic.i ...

  3. C语言一维指针的深入理解

    指针是C语言中广泛使用的一种数据类型.运用指针编程是C语言最主要的风格之一. 利用指针变量可以表示各种数据结构:能很方便地使用数组和字符串:并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指 ...

  4. 【好程序员笔记分享】——Cocoapods集成

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ Xcode集成POD教程 准备工作: 首先我们要在我们的电脑中安装POD,进入命令行,输入如下指令 sudo  ...

  5. Http GET、Post方式的请求总结

    读取http响应信息,并返回响应体 /// <summary> /// 读取http响应信息,并返回响应体 /// </summary> /// <param name= ...

  6. shell脚本的桩

    项目代码: alias book_search="/usr/local/mysql/bin/mysql -h 172.18.12.202 -uppstat -pstatpp book_sea ...

  7. ORA-19502: write error on file "", blockno (blocksize=)/linux下磁盘空间满了解决办法--Virtualbox

    今天,在测试环境启动数据库时,报错: SQL> startup; ORACLE instance started. Total System Global Area  285212672 byt ...

  8. scaletype

    http://www.myexception.cn/image/726203.html 图片说明Andorid中ImageView的不同属性ScaleType的区别 ImageView是Android ...

  9. PowerShell 管道和对象成员

    2.1  管道 在各种现代的shell中,均支持管道的概念. 管道的最大特点就是:  前一个命令的输出作为后一个命令的输入.cmd.bash均支持管道的概念,这里我就不多说了,下面我们说说PS中 管道 ...

  10. wikioi1191 数轴染色

    题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色.接着 我们进行M次操作,第i次操作将[Li,Ri]这些点染成白色.请输出每个操作执行后 剩余黑色点的个 ...