运算符重载不同的格式

时间:2018-03-15 21:57:53

标签: c++ operator-overloading

我看到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;关键字运算符之前。 为什么这些重载结构不同或者我错过了什么?提前谢谢。

0 个答案:

没有答案