我试图重载<<运算符打印出双指针,但所有即时通讯都是垃圾输出。这是我的代码:
ostream& operator << (ostream& out, const Student& s)
{
out << s.height << "/" << s.age;
return out;
}
我应该在第二个参数中添加什么?现在它可以打印指针没问题,但是当我将学生*更改为学生**时它无法正常工作。
答案 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;
或者你可以使用所有这些。