2012-01-02 74 views
0
void operator<< (const Integer& left, const Integer& right) 
{ 
    cout << "\n: " << right.i; 
} 

可以像访问如何使操作符的左操作数<<一个函数?</p> <pre><code>Integer obj; obj << 5 << 3 << 2; </code></pre> <p>精细:

qDebug作品像qdebug() << 2;

这意味着<<运算符的左操作数是函数。

什么应该是一个用户自定义函数的语法,这样我可以这样写:
myfunc() << 2;

+1

它不是调用的* functions'* <<运算符,而是来自返回对象的*运算符。 – codeling 2012-01-02 11:36:33

+1

事实上,你的代码将无法编译;为了能够将调用链接到'operator <<',它必须返回一个可以用作第一个参数的值。通常,您只需返回对第一个参数的引用。 – Gorpik 2012-01-02 11:43:13

回答

5

左操作数是不是一个功能,它是值的函数返回。具体而言,qDebug()返回一个QDebug的实例,其中有约20个过载定义为<<

+1

因此,该函数应该返回一个具有'operator <<'函数的对象,该函数的行为如所期望的那样。 – 2012-01-02 11:38:05