dynamic_cast.cpp
来源:互联网 发布:如何建立网络折扣平台 编辑:程序博客网 时间:2024/05/17 06:09
动态映射 安全类型向下映射
#include <iostream>#include <stdlib.h>#include <time.h>#include <vector>using namespace std;class shape{public:shape() { count++; }virtual ~shape() { count--; }virtual void draw() const = 0;static int quantity() { return count; }protected:static int count;};int shape::count = 0;class rectangle:public shape{void operator=(rectangle&);protected:static int count;public:rectangle() { count++; }rectangle(const rectangle&){ count++; }~rectangle() { count--; }void draw() const {cout<<"rectangle::draw()"<<endl;}static int quantity() { return count; }};int rectangle::count = 0;class ellipse:public shape{void operator=(ellipse&);protected:static int count;public:ellipse() { count++; }ellipse(const ellipse&){ count++; }~ellipse() { count--; }void draw() const{cout<<"ellipse::draw()"<<endl;}static int quantity() { return count; }};int ellipse::count = 0;class circle:public shape{void operator=(circle&);protected:static int count;public:circle() { count++; }circle(const circle&){ count++; }~circle(){ count--; }void draw() const{cout<<"circle::darw()"<<endl;}static int quantity() { return count; }};int circle::count = 0;int main(){vector<shape*> shapes;time_t t;srand((unsigned int)time(&t));const int mod = 12;for(int i=0; i<rand()%mod; ++i)shapes.push_back(new rectangle);for(int i=0; i<rand()%mod; ++i)shapes.push_back(new circle);for(int i=0; i<rand()%mod; ++i)shapes.push_back(new ellipse);int Ncircles = 0;int Nellipses = 0;int Nrects = 0;int Nshapes = 0;for(int i=0; i<shapes.size(); ++i){shapes[i]->draw();if(dynamic_cast<circle*>(shapes[i]))Ncircles++;if(dynamic_cast<ellipse*>(shapes[i]))Nellipses++;if(dynamic_cast<rectangle*>(shapes[i]))Nrects++;if(dynamic_cast<shape*>(shapes[i]))Nshapes++;cout<<"dynamic_cast:"<<Nshapes<<endl;}cout<<endl<<endl<<"circles="<<Ncircles<<endl<<"ellipse = "<<Nellipses<<endl<<"rectangles = "<<Nrects<<endl<<"shapes = "<<Nshapes<<endl<<endl<<"circle::quantity()="<<circle::quantity()<<endl<<"ellipse::quantity = "<<ellipse::quantity()<<endl<<"rectangle::quantity()="<<rectangle::quantity()<<endl<<"shape::quantity()="<<shape::quantity()<<endl;for(int i=0; i<shapes.size(); ++i)delete shapes[i];circle * ptemp = new circle;delete ptemp;return 0;}
0 0
- dynamic_cast.cpp
- typeidRTTI.cpp;dynamic_cast<Derive22&>(b2);
- dynamic_cast
- Dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- dynamic_cast
- Servlet--SingleThreadModel接口,RequestDispatcher接口
- 自旋锁和互斥体
- tomcat7 redis session 共享
- 获取编辑框内容的方法
- 第十一章:一些理论知识整理
- dynamic_cast.cpp
- 程序员必须掌握的8大排序算法
- 小胖说事18-------集成支付宝SDK时经常出现的错误以及解决办法
- 关于备份数据库中某几张表的方法
- Lua与C通信——Lua API(一)
- 掌握STL的 基本实现和使用方法
- Android很详细的将开源库分类列出的网站
- 解释android:Layout_width 和Android:width的区别还有android:Layout_gravity和android:gravity的区别和用法
- redis session管理