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. R语言的数据结构

    首先声明,R语言对大小写敏感. 一.向量 vector类型可以存储数字.字符和逻辑类型.构建函数为C(): > a <- c(1,2,3,4) > b <- c('dau',' ...

  2. [0] Tornado Todo 开篇

    参考自: python: tornado例子 Github地址:tornado_todo 开发环境: Python包的安装: 首先安装 pip: sudo apt-get install python ...

  3. sql server高效分页控件及c#调用实例

    第一.首先在sqlserver中创建一个存储过程 USE [BZY] GO /****** 对象: StoredProcedure [dbo].[up_ProcCustomPage2005_New] ...

  4. Android Development Tools 发生checkAndLoadTargetData错误

    之前使用时没有出现任何问题的,我把D:\IDE\ADT\adt-bundle-windows-x86_64-20140321\eclipse目录下面的 eclipse.exe重名名为adt.exe并设 ...

  5. 如何向投资人展示——How to Present to Investors

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:茶叶末链接:http://www.zhihu.com/question/23638879/answer/34525204来源: ...

  6. android WebView, WebChromeClient和WebViewClient加载网页基本用法

    WebView, WebChromeClient和WebViewClient加载网页基本用法 webview是android中的浏览器控件,在一些手机应用中常会用到b/s模式去开发应用,这时webvi ...

  7. 微信开放JS-SDK,助力网页开发

    From:http://mp.weixin.qq.com/s?__biz=MjM5NDAwMTA2MA==&mid=209208141&idx=1&sn=1f075212b34 ...

  8. Uva11183-Teen Girl Squad(有向图最小生成树朱刘算法)

    解析: 裸的有向图最小生成树 代码 #include<cstdio> #include<cstring> #include<string> #include< ...

  9. hdu 5656 CA Loves GCD(dp)

    题目的意思就是: n个数,求n个数所有子集的最大公约数之和. 第一种方法: 枚举子集,求每一种子集的gcd之和,n=1000,复杂度O(2^n). 谁去用? 所以只能优化! 题目中有很重要的一句话! ...

  10. C# 使用枚举获取对应的数组值时

    using System; enum Move { walk, run } class Program { static float[] speedAry = { 50.0f, 200.0f }; p ...