一、程序及输出
1.1 利用成员函数做<<重载
#include<iostream>
using namespace std;
class Person
{
public:
Person(int a, int b)
{
this->m_A = a;
this->m_B = b;
}
ostream& operator<<(ostream& cout) {
cout << "m_A = " << this->m_A << " m_B = " << this->m_B;
return cout;
}
private:
int m_A;
int m_B;
};
void test01()
{
Person p1(10, 10);
p1 <<cout << endl;
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}
输出:
1.2 利用全局函数做<<重载
#include<iostream>
using namespace std;
class Person
{
friend ostream& operator<<(ostream &cout, Person & p1);
public:
Person(int a, int b)
{
this->m_A = a;
this->m_B = b;
}
private:
int m_A;
int m_B;
};
//利用全局函数 实现左移运算符重载
ostream& operator<<(ostream &cout, Person & p1)
{
cout << "m_A = " << p1.m_A << " m_B = " << p1.m_B;
return cout;
}
void test01()
{
Person p1(10, 10);
cout << p1 << endl;
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}
输出:
二、分析与总结
在 C++ 中,左移运算符 << 可以被重载为类的成员函数或全局函数,以实现自定义类型的输出操作。
全局函数重载
:
通过在类外定义一个全局函数来重载左移运算符 <<。
重载函数的参数应包括 std::ostream& 类型的输出流对象和要输出的自定义类型对象。
在重载函数内部,使用输出流对象来输出自定义类型的成员变量或数据。
成员函数重载
:
将左移运算符 << 重载为类的成员函数,使其能够直接访问类的私有成员。
在类的定义中声明成员函数,并在类外实现该函数。
成员函数的参数只需一个 std::ostream& 类型的输出流对象。
在成员函数内部,使用 this 指针来访问类的成员变量,并使用输出流对象来输出数据。
使用左移运算符
:
在使用左移运算符输出自定义类型对象时,可以直接在对象后面使用 << 运算符,并传递输出流对象作为参数。
重载的左移运算符函数将被调用,将自定义类型对象的数据输出到指定的输出流中。