[其它] 虽不合道理,但确能够正常执行的代码
qiezi
2006-11-25
虚方法可就不行啦
|
|
moniker
2006-11-25
bigpanda 写道 moniker 写道 教条一下哈。真正的C++顽固分子,上面这句应该写:
int main(void) { static_cast<A*>(0)->foo(); } C++高手,横空出世,以后热闹了。 晕,老大不带这么玩人的。汗一个。呵呵。 |
|
jack
2006-11-25
从未使用过任何*_cast,也没有啥问题出现过.基本上c和c++混用的.
|
|
Elminster
2006-11-30
moniker 写道 教条一下哈。真正的C++顽固分子,上面这句应该写:
int main(void) { static_cast<A*>(0)->foo(); } 真正 STD C++ 的狂热顽固分子,不会在 main() 里面写 void ,也不会省去那个 return 0; 的 ………… |
|
moniker
2006-11-30
Elminster 写道 moniker 写道 教条一下哈。真正的C++顽固分子,上面这句应该写:
int main(void) { static_cast<A*>(0)->foo(); } 真正 STD C++ 的狂热顽固分子,不会在 main() 里面写 void ,也不会省去那个 return 0; 的 ………… 哈哈哈。 ELM: 第一:main(void)这种写法是为了某些在ISO14882(1998)之前的编译器准备的,因为那些编译器如果不写main(void),它会认为必须是int main(int argc,char* argv[])。从而报错。当然,道理上讲,应该写int main()而不是int main(void),basic.start.main2写的非常清楚(14882-1998) 第二。省略这个return 0绝对是C++BIGOT的写法。因为俺当年刚学的时候,老写return 0; 被人耻笑,晕死。这个道理上讲不通,但是你去标准里看,所有的示例都没有return 0;(不用我举例了吧。在ISO14882的示例里,一堆一堆的)。并且我记得,MS的编译器刚出来时,曾经在代码生成时加过这个return 0;结果被好多C++ 社区的嘲笑。 标准本身是允许这样写的,好象高手们都很喜欢卖弄这一点。我觉得这个不是特别好。:P |
|
王者之剑
2006-12-06
编译能通过的时候,我从来不觉得奇怪,
编译不能通过的时候,我常常暗骂一句,然后在修改编译器或修改程序之中选择后者,呵呵。 |
|
spinach
2007-03-23
学习了~
|
|
小帽子
2007-05-11
哈哈 有趣
#include<iostream.h> class A { int t; public: void foo() { cin>>t; cout<<"foo"; }; }; int main() { A *a; a = new A; a=NULL; delete (a); a->foo(); system("pause"); return 0; } 学习了点东西~ |
|
simohayha
2007-05-11
汗下,俺写main从来不带void地说。
|
|
oldrev
2007-05-30
嗯啊,以前一致没注意,moniker高手啊
|