原文及评论见: «混沌 in c++::是类型?还是函数调用?»http://blog.csdn.net/jinhao/archive/2004/06/29/29021.aspx
作者的代码我在 vc++.net2003编译过.就目前来说,微软正式发布的c++编译器中,vc++.net2003是最贴近c++标准的.也正因为如此,vc++.net2003在编译vc++.net2002与vc++6的时候,千万不要忽略其警告,因为这些警告往往是在指出vc++.net2003与以前版本的不同(甚至是不兼容)之处,如果简单的忽略,代码的行为就可能不是你想要的.由于不是准备讨论这个问题,所以只给一个常见的例子: 【程序编程相关:软件开发公司管理手册】
看了原文的评论,发现有不少人误解“函数声明怎么能当形参”.一开始,我也是一头雾水,但后来总算是理解了,就在这里稍微总结一下,也算是给自已提个醒吧. 【推荐阅读:Installing Oracle 10】
在编译时,你应该注意到这个“警告”(我认为这是一个“错误”),并将代码改为: 【扩展信息:SCJP考试认证复习笔记系列之三】
bool bisok = nflags & 0x02 == 0x02; //warning c4554: “&” : 检查运算符优先级可能存在的错误;使用圆括号阐明优先级
bool bisok = (nflags & 0x02) == 0x02;
a a( a()) 到底是什么?目前存在两种说法:
函数声明 变量声明支持 “(2) 变量声明” 这个观点的人认为,a()是调用“默认构造函数”构造一个a类型的临时变量,然后再调用a的“拷贝构造函数”构造一个a类型的变量a.
让我们先看看下面的代码表示什么:
a a();
... 下一页