首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构或类中的友元函数

结构或类中的友元函数
EN

Stack Overflow用户
提问于 2020-04-18 00:26:48
回答 1查看 37关注 0票数 1

我想知道为什么当我在C++中使用关键字朋友重载<<操作符时,我没有得到错误,但当我没有使用朋友关键字时,我得到了一个错误!

代码语言:javascript
复制
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中定义我的函数,如下所示:

代码语言:javascript
复制
std::ostream& operator<<(std::ostream& os, const Student& s)
{
    os << s.name;
}

错误是当我没有使用friend关键字时:“这个操作符的参数太多了”,有人能解释一下原因吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-18 00:30:41

如果你不写friend,你就是在声明一个成员函数。这意味着像a << b这样的调用的左侧参数是您正在使用的类的实例。因此,您只需要指定右侧的参数,它将是唯一的参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61276267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档