C++中“运算符重载” 我试图在C++中重载运算符,但我遇到了一些困难。 这就是我在班上学到的: ostream & operator <<(ostream & s) { s << w(); return s; } string w() { stringstream ss; string str; for (int i=n-1; i>=0; i--) { if (i==n-1) { ss<<tablica[i] << "x^" << i; } else { if (tablica[i]<eps && tablica[i]>-eps) ss <<"+" << +tablica[i]<< "x^" << i; else if (tablica[i]<eps)ss << tablica[i]<< "x^" << i; if(tablica[i]>eps) ss <<"+" << +tablica[i]<< "x^" << i; } } ss >> str; return str; }

C++中“运算符重载” 我试图在C++中重载运算符,但我遇到了一些困难。 这就是我在班上学到的: ostream & operator <<(ostream & s) { s << w(); return s; } string w() { stringstream ss; string str; for (int i=n-1; i>=0; i--) { if (i==n-1) { ss<<tablica[i] << "x^" << i; } else { if (tablica[i]<eps && tablica[i]>-eps) ss <<"+" << +tablica[i]<< "x^" << i; else if (tablica[i]<eps)ss << tablica[i]<< "x^" << i; if(tablica[i]>eps) ss <<"+" << +tablica[i]<< "x^" << i; } } ss >> str; return str; },c++,overloading,operator-keyword,C++,Overloading,Operator Keyword,我试着这样使用它: cout << p << endl; 错误:“operatorostream&operator不匹配重载运算符以两种方式之一调用。作为成员函数,其中x op y;视为x.opy;或者一个全局,其中x op y;变成opx,y 请注意,当运算符是成员函数时,左操作数必须是重载运算符的操作数。在插入流的情况下:x首先需要考虑一般设计。 我认为您想要重载运算符重载是指当编译器的相应运算符用于一个或多个变量时,告诉编译器如何执行某个操作的能力 例如,编译器对

我试着这样使用它:

cout << p << endl;

错误:“operatorostream&operator不匹配重载运算符以两种方式之一调用。作为成员函数,其中x op y;视为x.opy;或者一个全局,其中x op y;变成opx,y


请注意,当运算符是成员函数时,左操作数必须是重载运算符的操作数。在插入流的情况下:x首先需要考虑一般设计。
我认为您想要重载运算符重载是指当编译器的相应运算符用于一个或多个变量时,告诉编译器如何执行某个操作的能力

例如,编译器对减法运算符的操作不同,这取决于运算符的使用方式

当它被放置在一个数值的左边,如-48,编译器认为这个数字是负值。 当在两个整数值(如80-712)之间使用时,编译器将应用减法运算。 当在整数和双精度数之间使用时,例如558-9.27,编译器从右数中减去左数;该操作生成一个双精度数字。 当-符号对折并放在变量的一侧时,例如-variable或variable-,变量的值需要递减;换言之,应从中减去值1。
所有这些操作都有效,因为减法运算符-已在不同的类中重新配置,以便正确执行。

运算符的参数顺便说一句,您使用了错误的删除形式。那是未定义的行为。你也没有遵守三五法则,这也会导致未定义的行为。只要使用一个向量而不是那个可怜的指针,你就不再需要析构函数了。这已经是更短、更干净、更安全的代码了,更重要的是,当你考虑到你应该拥有的其他函数时,却没有。实际上,向下滚动更多,我才意识到这是一个基类。它应该有一个虚拟析构函数,尽管有一个向量或其他东西,它可以像~ClassName=default;一样简单;。如果它是在类中定义的,请将其设置为朋友关系,我认为这就是这里发生的事情。@Drew Dorman是的,确保能够输出关于一个类的信息,它应该可以访问该类的成员,然后应该估计朋友关系,否则可以使用gettersenough@gongzhitaao谢谢你的编辑。在处理复杂对象时,必须提到创建可能非常耗时/内存操作,最好使用按引用传递而不是按值传递。
friend ostream & operator <<(ostream & s, const class_name &c);
std::ostream &operator<<(std::ostream &os, T const &t)
ostream & operator <<(ostream & s, const tablica_type &c);