C++:输入输出运算符重载

在C++中,输入输出运算符是用于从标准输入设备(通常是键盘)读取数据或将数据输出到标准输出设备(通常是屏幕)的运算符。常用的输入输出运算符包括:

  1. 输入运算符 (>>): 用于从输入流(如键盘或文件)中读取数据,并将其存储到变量中。

  2. 输出运算符 (<<): 用于将数据发送到输出流(如屏幕或文件)以供显示。

当你需要使用输入输出运算符(<< 和 >>)重载来对自定义类型进行输入输出时,你通常需要考虑两个方面:

  1. 输出运算符重载:你可以使用输出运算符(<<)重载来定义如何将对象的信息输出到流中,比如输出到标准输出流(cout)或文件流中。

  2. 输入运算符重载:你可以使用输入运算符(>>)重载来定义如何从流中读取数据以初始化对象。

示例:
类:
class MyString {
private:
    int m_nNumberA;
    int m_nNumberB;
};

<< 输出运算符重载
   friend std::ostream & operator<<(std::ostream& cout,const MyString &obj) {
        cout << "NumberA:" << obj.m_nNumberA<<std::endl;
        cout << "NumberB:" << obj.m_nNumberB << std::endl;
        return cout;
    }

这段代码定义了一个名为 operator<< 的重载函数,用于输出 MyString 对象的信息。这个函数的作用是将 MyString 对象的成员变量 m_nNumberAm_nNumberB 输出到输出流中。

  • friend: 在这个函数声明中,friend 关键字表示这个函数是 MyString 类的友元函数,允许它访问 MyString 类的私有成员变量 m_nNumberAm_nNumberB。友元函数可以访问类的私有成员变量,这是为了方便操作数据而提供的一种机制。

  • std::ostream & operator<<(std::ostream& cout, const MyString &obj): 这是 operator<< 函数的声明,它接受一个 std::ostream 类型的输出流对象 cout 和一个 const MyString& 类型的对象 obj 作为参数,并返回一个 std::ostream 类型的对象引用。该函数用于输出 MyString 对象的信息到输出流中。

  • return cout;: 最后,函数返回输出流对象 cout,以便允许连续的输出操作。

通过重载输出运算符,可以定义如何将 MyString 对象的信息输出到输出流中,使得你可以使用 std::cout 或其他输出流来输出 MyString 对象的信息。

>>输入运算符重载
  friend std::istream& operator>>(std::istream& cin,MyString &obj) {
        cin >> obj.m_nNumberA;
        cin >> obj.m_nNumberB;
        return cin;
    }

代码定义了一个名为 operator>> 的重载函数,用于从输入流中读取数据并初始化 MyString 对象的成员变量。

  • friend: 在这个函数声明中,friend 关键字表示这个函数是 MyString 类的友元函数,允许它访问 MyString 类的私有成员变量 m_nNumberAm_nNumberB。友元函数可以访问类的私有成员变量,这是为了方便操作数据而提供的一种机制。

  • std::istream& operator>>(std::istream& cin, MyString &obj): 这是 operator>> 函数的声明,它接受一个 std::istream 类型的输入流对象 cin 和一个 MyString& 类型的对象 obj 作为参数,并返回一个 std::istream 类型的对象引用。该函数用于从输入流中读取数据,并将数据赋值给 MyString 对象的成员变量。

  • return cin;: 最后,函数返回输入流对象 cin,以便允许连续的输入操作。

通过重载输入运算符,你可以定义如何从输入流中读取数据,并初始化 MyString 对象的成员变量,使得你可以使用 std::cin 或其他输入流来输入数据并初始化 MyString 对象。

在程序中的使用:
int main(){
    MyString StringObjA;
    
    //使用>> 重载后的输入运算符
    std::cin >> StringObjA;
    
    //使用<< 重载后的输出运算符
    std::cout << StringObjA << std::endl;
​
    system("pause");
    return 0;
}

结果:

在类中对输入输出运算符进行重载,可以让我们自定义对该类对象的输入输出行为。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值