定义流操作符的另一个版本是什么?

时间:2016-03-01 01:37:25

标签: c++

我在谷歌上找到的所有内容都可以为您的课程添加流兼容性,以便您可以

std::cout << myClassInstance;

但我对此不感兴趣,我想做的是

myClassInstance << "stuff here";

那叫做什么手术?

1 个答案:

答案 0 :(得分:1)

重载<<运算符?这在技术上是一个位移操作符,但它可能更常用作流操作符。

并不是说恕我直言。我想它看起来不错,但我认为函数调用运算符更合乎逻辑。

template <typename T>
MyClassType& MyClassType::operator<<(const T& rhs)
{
    do_something_vague_and_unclear_because_there_is_no_MCVE(rhs);
    return *this;
}

您很可能必须对特定参数类型使用不同的重载,而不是模板函数。

MyClassType& MyClassType::operator<<(const std::string& str)
{
    //...
}

MyClassType myClassInstance;
myClassInstance << "Hello, world!";