发现VS2008和GCC的一个bug

Jenf_Mu 2012-12-15 11:13:54
起这样的标题,是为了引起关注,希望高人能解释这个现象,不过,这也确实是个bug

试问,一个类的构造函数

DisplayElement(int _a):a(a)
{
cout<<"constructor"<<_a<<":"<<a<<endl;
}
这里_a和a在什么情况下可以显示的值不同?

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

template <typename elementType>
struct DisplayElement
{
int a;
DisplayElement(int _a):a(_a)
{
cout<<"constructor"<<_a<<":"<<a<<endl;
}
void operator () (const elementType& element) const
{
cout << a<<":"<<element << endl;
}
};

int main(int argc, char *argv[])
{
vector<int> vecIntegers;
vecIntegers.resize(10);

for_each ( vecIntegers.begin () // Start of range
, vecIntegers.end () // End of range
, DisplayElement <int>(123) ); // Unary function object

return 0;
}


在VS2008和GCC里编译,cout<<"constructor"<<_a<<":"<<a<<endl;这里这两个值是不同的。
而在VS2010下,是相同的。
...全文
135 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeanJoy 2012-12-15
  • 打赏
  • 举报
回复

constructor123:123
123:0
123:0
123:0
123:0
123:0
123:0
123:0
123:0
123:0
123:0
请按任意键继续. . .
为何我的VS2008上运行是一样的? 你何不断点单步一下呢?
  • 打赏
  • 举报
回复
dev-c++也没问题,它是Windows平台上的GCC。
Jenf_Mu 2012-12-15
  • 打赏
  • 举报
回复
dev-c++也没问题,它是Windows平台上的GCC。
schlafenhamster 2012-12-15
  • 打赏
  • 举报
回复
vc6 下: constructor:123:123
  • 打赏
  • 举报
回复
我很好奇,lz的2008是哪里来的?

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧