首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过载Ostream算子

过载Ostream算子
EN

Stack Overflow用户
提问于 2021-05-20 13:24:06
回答 1查看 252关注 0票数 0

我发现当我在类或结构中创建ostream运算符时,它只接受一个参数,而第二个参数是这个指针,所以我尝试这样做,但是它没有工作。

我知道我应该在类或结构之外创建它,作为一个自由函数,但是我正在试图理解为什么?

代码语言:javascript
复制
struct Vector2 
{
    float x,y ; 
    Vector2(float ax , float ay )
    {
        x = ax ; 
        y = ay ; 
    }
    std:: ostream&  operator<< (std::ostream&  stream )
    { 
        return stream <<this->x<< " , "<< this->y ; 
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-20 13:39:54

<<重载时,a << b意味着

代码语言:javascript
复制
operator<<(a,b)

如果重载是一个空闲函数,或者

代码语言:javascript
复制
a.operator<<(b)

如果是会员的话。

也就是说,对于定义为成员的运算符,左边的参数是*this,您需要编写

代码语言:javascript
复制
Vector2 v;
v << std::cout;

wihch相当于

代码语言:javascript
复制
Vector2 v;
v.operator<<(std::cout);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67621224

复制
相关文章

相似问题

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