重载<<<运算符并打印出双指针

时间:2015-11-13 08:24:47

标签: c++ pointers

我试图重载<<运算符打印出双指针,但所有即时通讯都是垃圾输出。这是我的代码:

    ostream& operator << (ostream& out, const Student& s)
    {
        out << s.height << "/" << s.age;
        return out;
    }

我应该在第二个参数中添加什么?现在它可以打印指针没问题,但是当我将学生*更改为学生**时它无法正常工作。

1 个答案:

答案 0 :(得分:0)

1.如果你重载运算符&lt;&lt;像这样:

std::ostream& operator << (std::ostream& out, Student& s)
{
    out << s.height << "/" << s.age;
    return out;
}

你可以像这样使用它:

Student stud;
cout << stud;

2.如果你重载运算符&lt;&lt;像这样:

std::ostream& operator << (std::ostream& out, Student* s)
{
    out << s->height << "/" << s->age;
    return out;
}

你可以像这样使用它:

Student *stud = new Student;
cout << stud;
delete stud;

3.如果你重载运算符&lt;&lt;像这样:

std::ostream& operator << (std::ostream& out, Student** s)
{
    out << (*s)->height << "/" << (*s)->age;
    return out;
}

使用可以像这样使用它:

Student *stud = new Student;
cout << &stud;
delete stud;

或者你可以使用所有这些。