为什么结果为1而不是真实的?

时间:2019-06-01 18:11:09

标签: c++ oop operator-overloading

当我执行下面的代码时,我希望结果是正确的,但是在编译代码后,它返回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;
 }

0 个答案:

没有答案