C++和C不同是因为函数重载
2012-12-01 11:44:41 来源:WEB开发网 在C语言里,一个指针可以指向一个函数。这个指针也有两个属性,但一个是函数的入口地址,另一个是函数的返值类型。例如下面的程序,它在C语言里是正确的:
int time12(int i)
{ return(i%12);
}
int main()
{ int(*fp)()=time12;
intt=fp(13);
return0;
}
主函数的第一句是一条定义语句。我们应从等号左边的标识符读起,等号左边出现的除了标识符以外都是类型的符号,读的顺序却要按照这个符号作为运算符时的运算级别来读。此句读作:fp是一个指针、它指向函数(注意,C语言允许其参数类型不写出)、这个函数的返值是int、这个指针被初始化为函数time12的入口地址。
然而,上述程序在C++里,第一条语句却被认为是有错误的。C++是强类型检查语言,这与C++的函数重载机制有关。C++要求必须指出函数的所有形式参数的类型。下列程序才是正确的C++程序:
int time12(int i)
{ return(i%12);
}
int main()
{ int(*fp)(int)=time12;
intt=fp(13);
return0;
}
----------------------------------------------作者声明-----------------------------------------
我是一个老头,65岁,编过10年程序,在大学教过15年书,写了一本书,名为《C++释难解惑》,这几年来一直在投稿。出版社对我的书稿评价很好,但他们就是由于经济上的风险。总是在出版的最后关头反悔。其中北京****出版社已经签字画押的情况下反悔;北京****出版社与我签过电子合同;书稿在**大学出版社放了9个月,还让我请名人写序言,最后说现在书很难卖,并且还给我发了个近半年的图书销售的excel文档让我看,希望我理解出版社。我只好仰天嗟叹了。
有编辑朋友建议我把书稿放到网上让读者试读,以印证读者的人数和满意度。我想这是一个办法,即使永远不能出版,也不至于烂在肚子里。并且我在网上也看到这个办法成功的先例,例如《C语言深度解剖》,后来就由北航出版社出版了。
《C语言深度解剖》的作者采用的方法是把书稿上传到网上。我想采用化整为零的方法,每周起码在我的CSDN博客里发一篇文章,是书稿里的内容稍加改造的。之所以这样做确实出自于私心,就是想借此赚取CSDN的积分。因为我以前忙于教书,无暇经常光顾CSDN,所以几乎没有积分,这样是不能被大家所认识的。
博文与书稿上的文字可能有极少的字面上的不同。
如果您对我的书稿和博文感兴趣,请您推荐给您的朋友,谢谢。
本书稿已经国家版权保护中心进行了作品登记,登记号为:2010-A-023237。
下面我把一些出版社给我的来信摘录作为参考。您可以看到,我的书名在不同的出版社和编辑面前改了好几次名了,现在书稿的名字是我自己的。
//-----------------------------------以下是**大学出版社编辑的来信---------
陈老师,
选题我暂以《C++释疑解惑:课本没讲透的131个问题》的名字报上去了。通过审批应该问题不大。下面几点,是咱们电话里说过的,麻烦你着手进行啊:)
//-----------------------------------------------------------------------------------------------------------
陈老师好
从您的来信,我觉得您的文字驾驭能力挺好的,如果您的书,能写成您给我来信的风格,也不错,现在市场上还就缺这样的书。那种一步步讲操作,枯燥的原理,确实没人愿意看,而那种语言比较生动,穿插一些开发故事,体会心得之类的文风,让冰冷的技术活了起来,容易引起读者的共鸣。所以,建议书至少300页,写得生动些,多配些图,甚至每章最后都可以增加上一些问答,比如您历年教学收集到的经典问题等等。当然,其他的一些方法,也都可以尝试,我这里只是抛砖引玉。
更多精彩
赞助商链接