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. var_export函数的使用方法

    var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码.var_export必须返回合法的php代码, 也就是 ...

  2. css之自动换行-设计师零张

    自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...

  3. Cracking the coding interview 第一章问题及解答

    Cracking the coding interview 第一章问题及解答 不管是不是要挪地方,面试题具有很好的联系代码总用,参加新工作的半年里,做的大多是探索性的工作,反而代码写得少了,不高兴,最 ...

  4. Ubuntu 16.04 LTS 正式发布:系统将持续更新5年

    Canonical 刚刚正式发布了Ubuntu 16.04 LTS (Xenial Xerus),这是一个长期支持版本,官方会提供长达5年的技术支持(包括常规更新/Bug修复/安全升级),一直到202 ...

  5. Socket,非阻塞,fcntl

    一.fcntl 用以下方法将socket设置成为非阻塞方式 int  flags = fcntl(socket,F_GETFL,0); fcntl(socket,F_SETFL,flags|O_NON ...

  6. Linux下如何选择文件系统:EXT4、Btrfs 和 XFS

    老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统.Windows 和 Mac OS X 用户更没有理由去考虑,因为对于他们的操作系统,只有一种选择,那就是 NTFS 和 HFS+. ...

  7. ps&&/proc/pid/xxx

    ps 如果想看一个进程的启动时间,可以用lstart来看 [root@jiangyi02.sqa.zmf /home/ahao.mah] #ps -eo pid,lstart,etime,cmd |g ...

  8. Lua Table 操作

    Lua中table类似与C#种的字典,其实就是一个key-value键值对数据结构.来学习下table基本操作 Table的创建 myTable = {} --表名后面使用{}赋值,表示一个空的表 m ...

  9. [Regex Expression] Tagline --- {0, } {1,10}

    Using a character set repeated 1 or more times, make a pattern to search for strings that do not con ...

  10. Git 笔记一 Git简介

    git 笔记一 什么是版本控制 所谓版本控制就是记录对文件的修改记录,这样以后就能回退到需要的 版本.比如你对一段代码进行了几次修改,有几次修改不想要了,如果 使用了版本控制,就可以回退到未做这些修改 ...