使用setter函数重载插入操作符Versus

时间:2017-07-14 09:45:45

标签: c++ oop operator-overloading

在此代码中,我正在重载>> operator用于输入类对象的数据成员。也可以使用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;
}

1 个答案:

答案 0 :(得分:0)

这不是一个/或情况。 Setters / Getters是一个非常有用的全局设计功能,但您不必废弃它们来引入<< / >>表示法。

<< / >>表示法(ime)主要用于可以看作流的内容 - 特别是标准库流,但也包含代表某种流的自定义类数据。

<< / >>

的优点

当你正在使用的对象很可能被用于这种上下文(数据流)时,那么与普通的getter相比,覆盖这些操作符会对可读性和易于理解代码产生巨大影响setter方法。

此外,正如您在代码中所显示的那样,“级联”功能可以非常简洁地表达正在发生的事情。

get / set

的优点

Getters / Setters(再次使用)更常见,所以更有可能是其他人阅读/使用你的代码会立即理解它的重点。

它们还允许对正在读/写的进行更精细的控制。也许你不想写整个对象,只想写一个成员。

结论

两者都有它们的用途,我说它主要是关于你使用它的上下文。我很少覆盖那些运算符,但经常使用get / set方法 - 但是我经常编写的代码并不涉及很多输入/输出。