我看到operator()重载和ostream<<的运算符重载有两种不同的格式。超载,想知道为什么会这样。
#include <iostream>
using namespace std;
class printData {
public:
std::string str = "hello";
operator std::string () const; // {return str;}
};
printData::operator std::string () const {return str;}
std::ostream& operator << (ostream& os, printData const& p){
return os << p.str;
}
int main(void) {
printData pd{};
//
std::string str2 = pd; // str2 = pd.str from operator() overload
std::cout << str2 << std::endl; // output "hello"
std::cout << pd << std::endl; // output "hello" (from ostream overload)
return 0;
}
operator()重载具有返回类型std :: string AFTER关键字运算符。 ostream重载具有返回类型ostream&amp;关键字运算符之前。 为什么这些重载结构不同或者我错过了什么?提前谢谢。