我想知道为什么当我在C++中使用关键字朋友重载<<操作符时,我没有得到错误,但当我没有使用朋友关键字时,我得到了一个错误!
struct Student
{
std::string name;
int age;
bool operator<(const Student& s) const
{
return this->age < s.age;
}
friend std::ostream& operator<<(std::ostream& os, const Student& s);
};我在main.cpp中定义我的函数,如下所示:
std::ostream& operator<<(std::ostream& os, const Student& s)
{
os << s.name;
}错误是当我没有使用friend关键字时:“这个操作符的参数太多了”,有人能解释一下原因吗?
发布于 2020-04-18 00:30:41
如果你不写friend,你就是在声明一个成员函数。这意味着像a << b这样的调用的左侧参数是您正在使用的类的实例。因此,您只需要指定右侧的参数,它将是唯一的参数。
https://stackoverflow.com/questions/61276267
复制相似问题