C++ 我将如何超负荷运行<<&引用;?

C++ 我将如何超负荷运行<<&引用;?,c++,overloading,operator-keyword,C++,Overloading,Operator Keyword,我的教授说,的操作符重载可以执行如下操作 std::ostream & operator<<(std::ostream &out,const classname &outval) { //output operation like out<<outval.code<<":"<<outval.name<<"@"<<outval.price; return out; } std::ost

我的教授说,的操作符重载可以执行如下操作

std::ostream & operator<<(std::ostream &out,const classname &outval)
{
    //output operation like out<<outval.code<<":"<<outval.name<<"@"<<outval.price;
    return out;
}

std::ostream&operator如果您理解了前面问题的解决方案,那么理解下面的代码是非常容易的。唯一的区别是friend函数的用法,您可以阅读它

为了更好地理解,下面给出了完全相同的示例

#include <iostream>
using namespace std;

class Product
{
private:
    int code; string name; double price;
public:
    Product(int, string, double);
    friend ostream & operator << (ostream &out, const Product &p);

};

Product :: Product(int code, string name, double price) {
    this->code = code;
    this->name = name;
    this->price = price;
}

ostream & operator << (ostream &out, const Product &p)
{
    out<< p.code << ": " << p.name << " @ "
             << p.price << "/pound.\n";
    return out;
}


int main()
{
   Product book1(1256,"Into to programming", 256.50);
   Product book2(1257,"Into to c++", 230.50);
   cout<<book1<<endl<<book2;
   return 0;
}
#包括
使用名称空间std;
类产品
{
私人:
整数代码;字符串名称;双倍价格;
公众:
产品(整数、字符串、双精度);
friend ostream&操作员代码=代码;
此->名称=名称;
这个->价格=价格;
}

ostream&operator答案与您之前发布的答案相同。仅供参考,它在我的机器和像ideone.com这样的在线编译器中工作。我认为它应该运行得很好,因为我们使用friend函数声明函数,friend函数可以访问其类的私有成员。
std::ostream & operator<<(std::ostream &out,const classname &outval)
{
    //output operation like out<<outval.code<<":"<<outval.name<<"@"<<outval.price;
    return out;
}
friend std::ostream & operator<<(std::ostream &out,const classname &outval);
#include <iostream>
using namespace std;

class Product
{
private:
    int code; string name; double price;
public:
    Product(int, string, double);
    friend ostream & operator << (ostream &out, const Product &p);

};

Product :: Product(int code, string name, double price) {
    this->code = code;
    this->name = name;
    this->price = price;
}

ostream & operator << (ostream &out, const Product &p)
{
    out<< p.code << ": " << p.name << " @ "
             << p.price << "/pound.\n";
    return out;
}


int main()
{
   Product book1(1256,"Into to programming", 256.50);
   Product book2(1257,"Into to c++", 230.50);
   cout<<book1<<endl<<book2;
   return 0;
}