c++重载〈〈打印对象属性的地址,而不是实际值

bejyjqdl  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(147)

所以我正在学习操作重载。我试图重载〈〈来打印对象属性。在我的例子中,Properties是一个继承了person类的public部分的类。这是我所拥有的:

class Person {
    private:
        string name;
        int egn;
        string adress;
    public:
        friend ostream& operator << (ostream& out, const Person& c);
    }

    ostream& operator << (ostream& out, const Person& c)          
    {
        out << "Person name: " << c.name << "\n" << "Person egn: " << c.egn;
        return out;
    }
    int main()
    {  
        Properties* person_obj_1 = new Properties();
        person_obj_1 = add_person(person_obj_1);//Add some values 
        cout << person_obj_1 << "\n";
    }

而我得到的输出是000001CE89252130,这不是我想要的,我需要打印我的属性的实际值,我做错了什么?

toiithl6

toiithl61#

我做错了什么?
您正在打印Properties*而不是Person对象。也就是说,要获得预期的结果,您需要在Person对象上使用cout,您已经为该对象重载了operator<<,而不是指针Properties*

相关问题