当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 原文及评论见: 《混沌 In C++::是类型?还是函数调用?》http://blog.csdn.net/Jinhao/archive/2004/06/29/29021.aspx 看了原文的评论,发现有不少人误解“函数声明怎么能当形参”。
 

 

 ·手工修改动网新闻.net3.0的bug    »显示摘要«
    摘要:  最近,我们单位想要安装一个新闻系统,出于赶潮流,我选择了动网新闻.net3.0。   安装好后,一切看起来很正常,大家开始向里边输资料,一直都平安无事。几天后来了一个带图片的新闻,有图片那就上传杯。传完以后,一看出了问题。首页的图片预览中,图片大小没有使用缩略图,而是与图片的原始大小一样。整个页面板式被大图片挤的都变形了。   查看网页生成的html代码,发现 04070209261250.g......
    摘要:客户端源码分析之二: storage 类 作者:小马哥 日期:2004-6-28 由于 storage 类比较简单,我直接在源码基础上进行注释。掌握storage,为进一步分析 storagewrapper 类打下基础。 几点说明: 1、 storage 类封装了对磁盘文件的读和写的操作。 2、 bt既支持单个文件的下载,也支持多个文件,包括可以有子目录。但是它并不是以文件为单位进行下载和上传的,......


理解 《混沌 In C++::是类型?还是函数调用?》
上一页   ...

  这是变量声明吗?不是的,用默认构造函数声明一个变量应该写作:a a;;它应该是函数声明:该函数名称为a,没有参数,返回值为a类型.

单独使用: a(); 表示:struct a __cdecl(void),这是一个匿名的函数声明. 函数声明中:void func(a()); 表示:void __cdecl func(struct a (__cdecl*)(void)) ,很显然,这里a()就变成了一个函数指针声明:struct a (__cdecl*)(void). 在表达式中:?for_each(arr, arr+3, a()); 在这里,a() 才能当作一个表达式,很显然,唯有“默认构造函数”才能符合该用途.

  现在再来解决 a a( a()) 是什么东西?在这里,当同时可以解释成函数声明与变量声明的场合,函数声明优先. 【程序编程相关:软件开发公司管理手册

  我们再看看 a() 是什么?实际上,在不同场合,a() 有不同的意义: 【推荐阅读:Installing Oracle 10

  a a = a(),也只能解释成变量声明(调用拷贝构造函数). 【扩展信息:SCJP考试认证复习笔记系列之三

  a a (a(), 3) ,就只能解释成变量声明(调用一般构造函数).

这篇文章的意义在哪里?   有一部份人认为这篇文章没有意义,甚至无聊,更甚者认为是在混淆视听.理由是,写程序者要有好的编码风格,比如:

a a (a()) 如果是变量声明,就应该写成: a a = a(). a a (a()) 如果是函数声明,就应该写成: a a(a (*) ()).   这说法没错,而且好的风格极其重要.

  但是,许多人却常常犯下类似的错误,并不是因为编码风格不好,而恰恰是对该文章要表达的内容不了解造成的.一个最常见的错误如下:

a a()

  本意可能是想声明一个变量,结果却变成函数声明.就是因为习惯性的加上了括号造成的.而如果没有意识到这是一个函数声明的话,可能就不太清楚到底错在哪里.


 ·欢迎访问我的源码分析论坛    »显示摘要«
    摘要:http://mail.dprk-stamp.com/openidea/leobbs.cgi ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE