C++ 减法中的意外输出 #包括 #包括 使用名称空间std; 样板 T减去(T x,T y) { T差; diff=x-y; 返回差; } 班主任 { friend ostream&operator
您的运算符函数计算年龄不正确。应该是C++ 减法中的意外输出 #包括 #包括 使用名称空间std; 样板 T减去(T x,T y) { T差; diff=x-y; 返回差; } 班主任 { friend ostream&operator,c++,C++,您的运算符函数计算年龄不正确。应该是 #include<iostream> #include<string> using namespace std; template <class T> T subtract(T x,T y) { T diff; diff = x - y; return diff; } class Person { friend ostream& operator<<(ostream&,
#include<iostream>
#include<string>
using namespace std;
template <class T>
T subtract(T x,T y)
{
T diff;
diff = x - y;
return diff;
}
class Person
{
friend ostream& operator<<(ostream&, const Person&);
private:
string lastName;
string firstName;
int age;
public:
void setValues(string, string, int);
Person operator-(Person);
};
Person g, h, i;
ostream& operator<<(ostream& out, const Person& per)
{
out << per.firstName << " " << per.lastName << " " <<
per.age << " years old" << endl;
}
void Person::setValues(string last, string first, int ager)
{
lastName = last;
firstName = first;
age = ager;
}
Person Person::operator-(Person p)
{
Person temp;
temp.lastName = "Difference";
temp.firstName = "Age";
temp.age = g.age - i.age;
return temp;
}
int main()
{
g.setValues("Mitchell", "Donald", 40);
h.setValues("Clayton", "Rita", 35);
i = g - h;
cout << g << endl;
cout << h << endl;
cout << i << endl;
return 0;
}
您对
操作员-
的定义是错误的。您引用的是g
和i
,而不是您正在对其执行-
操作的两个人。应该是这样的:
temp.age = this->age - p.age
这是一个很好的全局变量咬你的例子。如果没有全局变量,编译器会立即向你显示这个问题。
temp.age=g.age-i.age;
你确定你的意思是g
和i
吗?你的操作符如果你要粘贴这么多代码,你应该将参数改为常数reference@UKMonkey或者,保留p
一个值,并使用p
而不是temp
。
Person Person::operator-(const Person& p)
{
Person temp;
temp.lastName = "Difference";
temp.firstName = "Age";
temp.age = this->age - p.age; // You can omit this->
return temp;
}