如何在c++中重载流操作符
How to overload stream operators in C++
我需要一个类来重载流操作符<<(插入器)和>>(提取器)插入或提取一个私有整数变量
一个选项是:
#include <iostream>
class C
{
private:
int i;
friend std::ostream& operator<<(std::ostream& os, const C& rhs)
{
os << rhs.i;
return os;
}
friend std::istream& operator>>(std::istream& is, C& rhs)
{
is >> rhs.i;
return is;
}
};
int main()
{
C c;
std::cin >> c;
std::cout << c << 'n';
return 0;
}
去你自己的班级?看看这个链接:http://www.cs.caltech.edu/courses/cs11/material/cpp/donnie/cpp-ops.html
简而言之,您将在类中添加如下内容:
ClassName & operator<<(int rhs) {
mylocalint = rhs;
}
ClassName & operator>> (int *rhs) {
*rhs = mylocalint;
}
class myclass {
private: int variable;
friend std::ostream& operator<<(std::ostream& out, const myclass& inst);
friend std::istream& operator>>(std::istream& out, myclass& inst);
};
std::ostream& operator<<(std::ostream& out, const myclass& inst)
{
return out << inst.variable;
}
std::istream& operator>>(std::istream& in, myclass& inst)
{
return in >> inst.variable;
}
int main() {
myclass obj;
std::cin >> obj;
std::cout << obj;
}
相关文章:
- 重载操作符+:表达式必须是整型或无作用域枚举类型
- 重载操作符
- 如何重载操作符==外模板类使用友元函数
- 重载*操作符,使其在左右两边都工作
- 重载操作符<对于非随机迭代器
- 在c++中重载操作符的时间和原因
- 如何在c++中重载=操作符来通过引用进行复制
- 如何在c++中获取定义为友元的重载操作符的地址
- 使用重载操作符的文件操作表达式没有给出预期的结果
- 重载操作符()
- 重载操作符()并在类内使用
- 类中的重载操作符+
- 定时使用重载操作符
- c++带类的重载操作符
- 用列表容器重载[]操作符
- 重载操作符=
- 任何重载操作符()的静态检测
- 重载操作符以处理类对象
- 在使用另一个类的类中重载操作符==
- 派生类和基类中的重载操作符不同