如何更改对象的cout字符串

时间:2016-02-16 03:10:34

标签: c++ c++11

这是我的代码

class MyObj {
};

int main(int argc, char **argv) {
    std::cout << new MyObj();
};

输出为0x613c40,是否可以将0x613c40更改为“我的对象描述”,我知道java有toString

3 个答案:

答案 0 :(得分:1)

你可能想要这样的东西:

#include <iostream>
class MyObj {
  public:
    int member_;
};

std::ostream& operator<<(std::ostream& os, const MyObj& myObj)
{
    return os << "MyObj{ member_ " << myObj.member_ << " }";
}
int main(int argc, char **argv) {
    MyObj myObj { 42 };
    std::cout << myObj << '\n';
};

答案 1 :(得分:0)

Use typeid operator.
MyObj obj;
std::cout << "MyObj has type: " << typeid(obj).name() << '\n'

答案 2 :(得分:0)

你需要重载“&lt;&lt;”运算符与“MyObj”类型的对象一起使用

std::ostream& operator << (std::ostream& output, const MyObj& myObj)
{    
   return output << "Whatever you want to output";
}

您要输出的内容可以是公共成员所拥有的名称,也可以是其包含的私人名称,此时由您决定。