在C++中,输入输出运算符是用于从标准输入设备(通常是键盘)读取数据或将数据输出到标准输出设备(通常是屏幕)的运算符。常用的输入输出运算符包括:
-
输入运算符 (
>>): 用于从输入流(如键盘或文件)中读取数据,并将其存储到变量中。 -
输出运算符 (
<<): 用于将数据发送到输出流(如屏幕或文件)以供显示。
当你需要使用输入输出运算符(<< 和 >>)重载来对自定义类型进行输入输出时,你通常需要考虑两个方面:
-
输出运算符重载:你可以使用输出运算符(<<)重载来定义如何将对象的信息输出到流中,比如输出到标准输出流(cout)或文件流中。
-
输入运算符重载:你可以使用输入运算符(>>)重载来定义如何从流中读取数据以初始化对象。
示例:
类:
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_nNumberA 和 m_nNumberB 输出到输出流中。
-
friend: 在这个函数声明中,friend关键字表示这个函数是MyString类的友元函数,允许它访问MyString类的私有成员变量m_nNumberA和m_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_nNumberA和m_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;
}
结果:

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