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. 第一个程序 - Windows程序设计(SDK)001

    愉快的开始 让编程改变世界 Change the world by program 编译器安装 我们经常说的 VS 指的就是 Microsoft Visual Studio 的简称,它是微软开发工具的 ...

  2. JS 没有块级作用域

    在函数(方法)中声明的所有变量,他们在整个函数中都有定义 var scope="abc"; function f() { alert(scope);  //显示undefine v ...

  3. .net 既可以输入又可以选择的dropdownlist

    第一.<script src="../../../Common/Scripts/combox.js" type="text/javascript"> ...

  4. linux常用命令(6)mv命令

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录.1 命令格式:mv [选项] 原文件或目录 ...

  5. CloudStack API编程指引

    原文地址:https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+API+Coding+Guidelines 前言 本文阐述 ...

  6. UIAutomator 学习版

    1.要写UIAutomator的testcase,首先要用Eclipse创建一个Java Project 需要将Junit 的lib加入到工程里 2.添加android.jar和uiautomator ...

  7. Tomcat 6.0.32 +Spring dbcp datasource关闭Tomcat出现严重异常

    异常如下: 信息: Pausing Coyote HTTP/ -- :: org.apache.catalina.core.StandardService stop 信息: Stopping serv ...

  8. hmac_sha1 签名

    use URI::Escape qw(uri_unescape); use MIME::Base64; use Digest::HMAC_SHA1; $str=Digest::HMAC_SHA1::h ...

  9. 使用Windows USB-DVD制作U盘启动安装系统盘

    第一步:到如下所示的地址下载所需要的*.iso系统镜像文件. http://msdn.itellyou.cn/ 第二步:下载Windows USB-DVD工具 https://www.microsof ...

  10. Mysql数据库乱码与编码问题筛查

    最近接连遇到数据库编码问题,让你的系统本来像个美丽的姑娘却忽然发现她不识字一样难受,其实很多时候是编码的问题,而mysql(特别地)设计编码的地方很多,在这里做一个筛查: 1 mysql编码 用下面的 ...