2016-05-01 188 views
-1

当编写非成员函数来重载一个操作符时,第一个参数是否对应于左操作数,第二个参数是否对应右操作数?重载操作符:第一个参数对应左操作数,第二个参数对应右操作数?

我试图超载“< <”操作者使用这样的:

stream << ClassA << ClassB 

下面是一个例子,其中FeetInches是成员变量类feetinches

这就是为什么这个参数顺序工作:

ostream &operator<<(ostream &strm, const FeetInches &obj) 
{ 
    strm << obj.feet << " feet, " << obj.inches << " inches"; 
    return strm; 
} 

-

但这个参数顺序不起作用?

ostream &operator<<(const FeetInches &obj, ostream &strm) 
{ 
    strm << obj.feet << " feet, " << obj.inches << " inches"; 
    return strm; 
} 

回答

2

ostream第一,因为我们在这里没有任何调用对象。

ostream &operator<<(ostream &strm, const FeetInches &obj) 
{ 
    strm << obj.feet << " feet, " << obj.inches << " inches"; 
    return strm; 
} 

cout<<obj<<endl;将被解释为operator<<(cout,obj);

3

是的,这一切都如你所说。

相关问题