在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;
}
结果:
在类中对输入输出运算符进行重载,可以让我们自定义对该类对象的输入输出行为。