【发布时间】:2017-07-14 09:45:44
【问题描述】:
在这段代码中,我重载了 >> 运算符来输入类对象的数据成员。也可以使用 getter 函数来完成。与使用 setter 函数相比,重载 >> 运算符有哪些优势?
#include<bits/stdc++.h>
using namespace std;
class point {
int x ,y ,z;
public:
void show(){
cout << x << y << z;
}
}
friend istream& operator >> (istream & i,point &);
};
istream& operator >> (istream & i,point &p){
i >> p.x >> p.y >> p.z;
return i;
}
int main(){
point p1,p2,p3;
cin >> p1 >> p2;//Cascading using friend function
return 0;
}
【问题讨论】:
-
你可以写一个更易读的
i >> p.x >> p.y >> p.z; -
使用输入运算符或吸气剂并不是真正的替代品。二传手不允许你例如从文件中读取。设置器允许您设置单个成员,您的输入运算符不
-
完成了。我在问什么时候可以使用 getter 函数完成相同的操作,为什么要重载 >>.
-
谁告诉你应该这样做的?例如,您可以从文件(或任何其他
istream)中读取。如果你不需要那个,那么就不要这样做。重载输入运算符并提供设置器是相当正交的 -
顺便说一句,我认为您的意思是“setter”而不是“getter”,否则我根本不明白这个问题
标签: c++ oop operator-overloading