函数重载是C++的一个很实用的特性,我们要好好的利用.由于工作内容的调整,我己经很久没有接触过C++了,
但是对于它的热爱却是从来降低过,最近一位"失踪"近一年多的网友突然出现在MSN上,而且一上来就要我帮
它一个忙,连个嘘寒问暖的前奏也没有,呵呵~~后来慢慢的了解到,它最近出国读书了,而且换成法律专业了,
晕倒~~不过,他现在和我一样,对于C++的也是割舍不掉!(心虚ing,最近起妈一直在学think in java)
问题是这样的:他原来写过一个MFC程序,大意在一个多文档程序最后关闭时,要在其所关闭的文档添加它的姓名及
还要在其上面留下一名很是肉麻的句子:谢谢您下次使用!其实函数定义如下:
void TMUiDocuPrint::drawGoodBye(const CString m_sentence,Point position)
{
const *focusdoc = GetFoucsDoc();
//to do something what you want
}
看到他的程式,估计他只对于当前激话的文档调用了该函数,现在要实现调用未激活的文档也要
打印致辞词~~
实现其来到是很简单,只有把函数换一下形式就可以了:
void TMUiDocuPrint::drawGoodBye(const *focusdoc = GetFoucsDoc(),const CString m_sentence,Point position)
{
//to do something what you want
}
每个调用这个函数的文档,把指字指传过来就可以了,
这里用到了函数的重载特性,以其参数来重载,剩下的工作就是ctrl + f,然后替换了!!!
改过去后,第二天,MSN上又见他了,说是想法变了,因为是共享软件,不想把用户所有打开的文档又打上致辞语~
不想因为用户的报怨~~(我们这些coder就是在这种变化中生存ing)
不过实现起来也是很简单的,C++语言特性提供的参数默认值正好派上用途了~`
void TMUiDocuPrint::drawGoodBye(const CString m_sentence,Point position,const *focusdoc = GetFoucsDoc())
{
//to do something what you want
}
愿意传过来,我就接受一下,不原因我自己来得到一个即可~~~
我们在开发中,一定要注重语言内置的功能的利用,像这样,他原来写的函数虽然能用,但是不能通用,
而重新写的代码却是可重用的.
多说两句:人们对于MFC总是充满怨言,但是我保下我自己的看法,MFC在当时的背景下,绝对是种精品,
像设计模式,C++的一些内置语言的功能的利用,是我们学习的榜样.