插入运算符的过载与使用二传手功能相比
Overloading of insertion operator Versus using setter function
在此代码中,我重载>>运算符以输入类对象的数据成员。也可以使用吸气函数来完成。与使用二传手功能相比,>>运算符重载有哪些优势?
#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 方法 - 但是我通常编写的代码不涉及太多输入/输出。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 插入运算符的过载与使用二传手功能相比
- 我的井字游戏的吸气机和二传手功能不起作用