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. npm install 本地安装与全局安装

    npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已: npm install grunt # 本地安装 npm install -g gr ...

  2. C51变量的存储

    一.全局变量和局部变量 全局变量和局部变量的区别在于作用域的不同.此外还有静态全局变量和静态局部变量. 全局变量作用域为全局,在一个源文件中定义,其他的源文件也可以应用.在其他的源文件中使用exter ...

  3. 【转】如何测试CTS4.0 -- 不错

    原文网址:http://blog.csdn.net/subsist/article/details/7209341/ CTS4.0测试步骤 V1.2 (更新到CTS4.0 R3)     第一:平台准 ...

  4. UML建模工具-火龙果软件

     官网地址:http://code.uml.com.cn/index.asp     Bridge桥梁模式    (待逆向) 桥梁模式,通过增加一个类,将抽象部分与它的实现部分分离,使它们都可以独立 ...

  5. 方案:抵御 不明SSL证书导致的 中间人攻击

    基于SSL数字证书的中间人攻击已经不是一个新技术了,但是我发现很多人并不清楚这种威胁,甚至感觉无所谓,我相信他们是由于短暂的无知蒙蔽了双眼,希望这篇文章可以让更多的人知道这种攻击方式,并清除这种网络威 ...

  6. apache 配置网站目录,虚拟目录,新端口

    1 配置网站目录,以ubuntu为例 1)打开apache的默认配置文件夹:cd /etc/apache2/sites-available 2)打开配置文件,本机为sudo vi  000-defau ...

  7. JUnit三分钟教程 ---- 快速起步

    JUnit三分钟教程 ---- 快速起步 摘自http://lavasoft.blog.51cto.com/62575/65625/ JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因 ...

  8. ArcGIS Runtime SDK for Android开发之调用GP服务(异步调用)

    一.背景说明 通过调用GP服务,Android客户端也能实现专业的.复杂的GIS分析处理功能,从而增加应用的实用价值. ArcGIS Server发布的GP服务,分为同步和异步两种类型,一般执行步骤较 ...

  9. 行人检測之HOG特征(Histograms of Oriented Gradients)

    之前的文章行人计数.计次提到HOG特征这个概念,这两天看了一下原版的论文,了解了一下HOG特征的原理,并依据自己的理解将这种方法的流程写了下来,假设有不正确的地方欢迎指正. HOG(Histogram ...

  10. Oracle静默安装-简单记录

    一.与图形界面安装一样,检查如下条件:新建用户.组创建安装目录配置环境变量检查安装依赖包修改内核参数……前面这些操作都属于常规操作,不管是图形还是静默都需要处理. 二./home/oracle/dat ...