两层多态,四个类

     花了一上午的时间,写了四个类,主函数中用了两层多态,按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;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值