Olu*_*ide 1 c++ operator-overloading ostream
以下代码包含operator<<MSVC 2008和gcc 4.6.3上的编译重载.这合法吗?
#include <iostream>
struct Foo
{
friend Foo operator<<( std::ostream& stream , Foo& foo );
Foo operator<<( std::ostream& stream )
{
return *this;
}
};
Foo operator<<( std::ostream& stream , Foo& foo )
{
return foo;
}
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
是的,operator<<在改变返回类型时重载是完全合法的- 它只是不能正常使用将类型与其他类型一起流式传输到C++流.
举个例子...
Foo my_foo;
std::cout << my_foo << '\n';
Run Code Online (Sandbox Code Playgroud)
......将进行评估......
operator<<(std::cout, my_foo).operator<<(std::ostream& ??? '\n' ???)
Run Code Online (Sandbox Code Playgroud)
...这'\n'不是一个可接受的参数Foo::operator<<(std::ostream&),因此您将收到编译错误.
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |