真搞不懂vc6.0是怎么优化的。。。
看注释就知道了
谁有vc7编译一下看看有没有类似问题
我用dev c++编译就没这个问题
#include <iostream>
using namespace std;
bool bout=0;
class AssistClass{
public:
int i;
int& operator [](int j){
if(bout) cout<<"AssistClass:"<<j<<"="<<p[i+j]<<endl;
return p[i+j];
};
private:
int p[100];
};
class TestClass{
public:
AssistClass &operator [](int i){
m_Assist.i=i;
if(bout) cout<<"TestClass:"<<i<<",";
return m_Assist;
}
private:
AssistClass m_Assist;
};
int main()
{
TestClass x;
int i,j,k,r;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
x[i][j]=i+j;
i=0;j=1;k=2;
bout=1;
//x[i][j]=i+j=1
//x[j][k]=j+k=3
r=x[i][j]*x[j][k];
//What will be x[i][j] now?
//We hope it to be 3,
//but the release version of VC6.0 shows us 6
cout<<r<<endl;
bout=0;
return 0;
}