当我执行下面的代码时,我希望结果是正确的,但是在编译代码后,它返回1。我在所学习的课程中未找到任何答案。
#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
class Integer
{
int value;
public:
Integer(int val) : value(val) {}
bool operator [](const char *name);
};
bool Integer::operator [](const char *name)
{
if ((strcmp(name, "first") == 0) && ((value & 1) != 0))
return true;
if ((strcmp(name, "second") == 0) && ((value & 2) != 0))
return true;
return false;
}
int main()
{
Integer n1(1);
bool ret = n1["first"];
cout<<ret;
}