两层多态,四个类

来源:互联网 发布:ios wkwebview js 编辑:程序博客网 时间:2024/05/20 12:23

     花了一上午的时间,写了四个类,主函数中用了两层多态,按Ctrl+F5打印数据的一瞬间,心里别提有多激动了。 C++是我大学学的第一门专业课,
也是期末考试时分数考的最多的一门专业课,自从大二天天熬夜写数据结构代码后,感觉激情一下子就消失了,之后就很少再拼命写C++程序了。大三开始实习后,
用的是Linux ,C和shell脚本语言,基本上项目从来没用过C++,现在又在熟悉的VS2008环境下编写cin,cout ,一下又激起了我对C++的兴趣和热情。 
  前几天主要在复习C++ Primuer Plus 中的面向对象编程 ,因为这次的项目比较大,有一个月的时间来让我搭框架,目的是做的更加有通用性,减少以后的对接工作量。 
 
          首先工具类有个基类 ,叫工具基类  
         有两种类,一种是工具类,另一种是流程类首先工具类有个基类 ,叫工具基类  



/*工具基类*/class upBase{public:virtual void gongju() {}/*构造函数声明和定义upBase*();   仅仅只是声明upBase() {}  定义*/upBase(){}   //默认构造函数};




工具基类派生出一个工具子类one


// 工具类型one class upBaseFtp:public upBase{public:    /*带参数的构造函数*/upBaseFtp(int st):upNum(st) { }void gongju(){cout <<"this is a Ftp gongju!"<<endl; }upBaseFtp() {}   //默认构造函数int upNum;};



其次是流程基类:


// 流程基类class Access{public:Access() {}/*带参数的构造函数:pupBase(_p) 和 pupBase = _p*/virtual void upLoad() { }void printAccess(){cout<<"this is accessBase!"<<endl;}/*基类类型成员*/upBase *pupBase;};



继承流程基类的流程类One:


/*对接流程类one*/class AccessOne:public Access{public:     /*派生类的构造函数*/AccessOne(upBase *_p):Access(_p) { }  AccessOne();void upLoad (){cout<<"this is AccessOne!"<<endl;}void printGongJu(){cout<<"print the gongju:"<<endl;pupBase->gongju();}~AccessOne (){delete pupBase;}};



最后是主函数: 

/*main函数中实现两层多态*/int main(){     /*声明对接类One,调用工具类Ftp*/upBaseFtp *pFtp=new upBaseFtp(322);AccessOne *pAccessOne =new AccessOne(pFtp);/*调用对接类one和工具类one 的函数*/pAccessOne->upLoad();pAccessOne->printGongJu();      cout<<endl;delete pAccessOne;getchar();return  0;}


    派生类的构造函数和基类的构造函数以及虚函数,这是C++实现动态绑定也即多态的基础,也是其核心。 
   啊,不会的知识点太多太多了,每天打鸡血一样的努力,也要学习好多天啊。 大学逃课的报应来的太快,只能现在拼命努力弥补了。
                                                                                                                          /*main函数中实现两层多态*/int main(){     /*声明对接类One,调用工具类Ftp*/<span style="white-space:pre"></span>upBaseFtp *pFtp=new upBaseFtp(322);<span style="white-space:pre"></span>AccessOne *pAccessOne =new AccessOne(pFtp);<span style="white-space:pre"></span>/*调用对接类one和工具类one 的函数*/<span style="white-space:pre"></span>pAccessOne->upLoad();<span style="white-space:pre"></span>pAccessOne->printGongJu();      <span style="white-space:pre"></span>cout<<endl;<span style="white-space:pre"></span>delete pAccessOne;<span style="white-space:pre"></span>getchar();<span style="white-space:pre"></span>return  0;} 

0 0