如何更改对象的 cout 字符串

How to change cout string for object

本文关键字:cout 字符串 对象 何更改      更新时间:2023-10-16

这是我的代码

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

输出是0x613c40,有没有办法0x613c40更改为"我的对象描述",我知道Java有toString

你可能想要这样的东西:

#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';
};
Use typeid operator.
MyObj obj;
std::cout << "MyObj has type: " << typeid(obj).name() << 'n'

您需要重载"<<"运算符以用于类型为"MyObj"的对象

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

您要输出的任何内容可以是它所包含的公共成员的名称或私有成员,此时由您决定。