代码之家  ›  专栏  ›  技术社区  ›  diego.martinez

如何正确地在C++中重载操作符?

  •  -3
  • diego.martinez  · 技术社区  · 6 年前

    我有一个带数值的类。 我需要添加一个操作符重载,当转换为char*(或wchar*)时,它返回一个具有可读值的字符串。

    我试过了

    VAR::operator char*()
    {
      STRING test;
      test.format("%d",value); //fills string with "readable" data
      return test.Get() //returns the char* content of the test;
    }
    

    你知道吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Ajay    6 年前

    除非你要求对方打电话,否则你不能这样做 delete[] 返回的指针。

    VAR::operator char*()
    {
      char* test = new char[required_bytes];
      // Fill 'test'
      return test;
    }
    

    std::string (或 std::wstring )对象。当调用者想要一个C字串的时候,他们可以打电话 c_str() 方法 w/string .

        2
  •  1
  •   bipll    6 年前

    你知道吗?

    1. VAR::运算符字符串();

    2. 如果不是1。然后返回字符串的新副本。

    char const *retVal = new char[test.size() + 1]; std::strncpy(retVal, test.Get(), test.size()); retVal[test.size()] = '\0'; return retVal; .

    delete[] 以后再说。)

    1. 最后,你可以 test 您的类的成员并返回其内容;然后它将在函数结束后继续存在。