插入运算符的过载与使用二传手功能相比

Overloading of insertion operator Versus using setter function

本文关键字:二传手 功能 运算符 插入      更新时间:2023-10-16

在此代码中,我重载>>运算符以输入类对象的数据成员。也可以使用吸气函数来完成。与使用二传手功能相比,>>运算符重载有哪些优势?

#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;
}

这不是非此即彼的情况。二传手/二传手是一个相当有用的全局设计功能,但你不必为了引入<</>>符号而废弃它们。

<</>>表示法(ime(主要用于可以被视为流的东西 - 特别是标准库流,但也用于表示某种数据流的自定义类。

<</>>的优点

当您使用的对象可能在这种上下文(数据流(中使用时,与普通的getter/setter相比,覆盖这些运算符可以对代码的可读性和易于理解产生巨大影响。

此外,正如您在代码中所示,"级联"功能可以是一种非常简洁的方式来表达正在发生的事情。

get/set的优点

Getters/Setters(再次是ime(更常见,因此阅读/使用您的代码的其他人更有可能立即理解它的意义。

它们还允许对正在读取/写入的内容进行更细粒度的控制。也许您不想编写整个对象,而只想编写其中的一个成员。

结论

两者都有其用途,我想说这主要是与您使用的上下文有关。我很少覆盖这些运算符,但经常使用 get/set 方法 - 但是我通常编写的代码不涉及太多输入/输出。