class Example { public: Example() { cout << "Created Entity!" << endl; } Example(int x) { cout << "Created Entity With!" << x << endl; } }; class Entity { private: std::string m_Name; Example m_Example; public: Entity() : m_Example(Example(8)) { m_Name = std::string("Unknow"); } Entity(const std::string& name) { m_Name = name; } const std::string& GetName() const { return m_Name; } }; int main() { Entity* e0=new Entity(); Entity e1=(string) "Mike"; cout << e1 << endl; //Entity e1("Mike"); //cout << e1.GetName() << endl; cin.get();这段代码里面为什么e0可以输出到数据流里,但e1不行
时间: 2024-02-01 16:03:20 浏览: 116
在代码中,e0是通过new操作符动态分配内存创建的一个Entity对象指针,而e1是以常规方式定义的Entity对象。因此,当你尝试将e1输出到数据流时,编译器不知道如何将其转换为字符串,而在e0的情况下,你可以将指针输出到数据流中,因为编译器知道如何将指针转换为字符串。如果你想输出e1的名称,你需要通过调用e1的GetName()函数来获取其名称并将其输出到数据流中。
阅读全文