C++学习笔记之:纯虚函数使用方法
2014-11-09 22:05
507 查看
题目:定义一个shape 抽象类,有一个纯虚函数Area(),派生出Rectangle(正方形)类和Circle(圆形)类,计算各个派生对象的面积Area(),派生类有自己的数据成员和实现计算面积的方法。定义10个元素shape指针数组,随机指向堆中de正方形或圆形对象(需要使用new动态空间)。在程序的最后通过遍历shape指针数组,输出10个图形的名称与面积。
文件夹格式如下:
Circle.h
Shape.h
Circle.cpp
有纯虚函数为抽象类 无实现,所有都自动默认
Shape.cpp
正文如下:
文件夹格式如下:
Circle.h
#pragma once #include "Shape.h" class CCircle:public CShape { public: CCircle(); ~CCircle(); public: void setit(); void Area(); private: double r; };
#pragma once #include "Shape.h" class CRectangle:public CShape { public: CRectangle(); ~CRectangle(); public: void Area(); void setit(); private: double m_l; };
Shape.h
#pragma once class CShape { public: CShape(); ~CShape(); public: virtual void Area() = 0; virtual void setit()= 0; };
Circle.cpp
#include "stdafx.h" #include "Circle.h" #include <iostream> using std::cout; using std::cin; CCircle::CCircle() { } CCircle::~CCircle() { } void CCircle::setit() { std::cout << "请输入圆半径:\n"; cin >> r; } void CCircle::Area() { cout << "圆的面积为:" << 3.14*r*r << "\n"; }Rectangle.cpp
#include "stdafx.h" #include "Rectangle.h" #include <iostream> CRectangle::CRectangle() { } CRectangle::~CRectangle() { } void CRectangle::setit() { std::cout << "请输入正方形的长:\n"; std::cin >> m_l; } void CRectangle::Area() { std::cout << "正方形的面积为:"<<m_l*m_l<<"\n"; }
有纯虚函数为抽象类 无实现,所有都自动默认
Shape.cpp
#include "stdafx.h" #include "Shape.h" CShape::CShape() { } CShape::~CShape() { }
正文如下:
// 上机题-2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "Circle.h" #include "Rectangle.h" #include <iostream> #include "Shape.h" #include <time.h> int _tmain(int argc, _TCHAR* argv[]) { srand((unsigned)time(NULL)); //随机种子 CShape *p[10]; //指针数组 表示数组中有十个指针 纯虚函数的类为抽象类 无法实现对象 ,但可以定义指针指向任何派生类。 int i = 0; while (i < 10) //循环输入10次 { switch (rand() % 2) //取余 有两种情况 要么0 要么1 { case 0:p[i] = new CCircle; //指向堆内存 p[i]->setit(); //设置圆半径 break; case 1: p[i] = new CRectangle; //指向堆内存 p[i]->setit(); //设置正方形长度 break; default: break; } i++; } for (int i = 0; i < 10; i++) { p[i]->Area(); //循环打印出什么形状的类型 } for (int i = 0; i < 10; i++) { delete p[i]; //释放内存空间 因为申请十次 循环十次释放 } return 0; }
相关文章推荐
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)(转载)
- 金庸小说考试之模板方法模式学习笔记[C++版]
- C++中虚函数和纯虚函数的区别和常见使用方法
- 学习笔记: Struts2中使用validate框架对Action的不同方法进行验证
- C++学习笔记之1:使用相同形式的new和delete
- [学习笔记][C++Primer Plus]使用cout格式化输出字符串,3q xuzhong
- [C++学习笔记]自定义函数的传值方法
- 智能指针auto_prt的使用(c++学习笔记)
- Domino学习笔记之@for和@elements的使用方法
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
- 我的嵌入式学习笔记(2)--scanf使用常见问题及解决方法
- C++学习笔记(6)——多重继承类对象的构造函数参数的传递方法
- [C++学习笔记]虚方法
- [学习笔记][C++Primer Plus]String类的使用
- [ASP.NET学习笔记之四]数据集的使用方法和技巧
- C++学习笔记之1:使用相同形式的new和delete
- Web Service学习笔记:天气预报Web服务的使用方法
- C++学习的一些笔记-->2:防止头文件多次导入造成重复编译的方法
- Windows编程 C++ DLL编程 学习笔记(一)静态链接库的创建和使用