输入输出的使用习惯
首先要知道,我们平时都是怎么使用的输入输出运算符的,比如下面这样
cin >> a >> b >> c;
cout << a << b << c << endl;
我们输入/输出首先把某个ostrem
/istream
对象写再前面(这里就是cout
和cin
了)后面跟着输入>>
输出<<
符号,再接上要输入/输出的变量。
而且我们的输入输出是可以拼接的(这是因为每个输入/输出运算返回了原来的ostream
/istream
对象)
重载示例
我们可以为任意类型定义它的输入/输出函数,然后使用上面的形式进行调用,总的来说就分成两类,一种是涉及到访问私有成员的(那么需要将这个函数声明为friend -- 友元函数),另一种就是不涉及私有成员的了
非友元
下面定义了一个类D
,它有一个私有成员x
和一个公有成员y
,再不声明为友元的情况下,定义的输出函数就只能访问y
而不能访问x
class D {
private:
int x;
public:
int y;
D(int x, int y): x(x), y(y) {}
};
ostream & operator<<(ostream &os, const D &d) {
return os << "y: " << d.y;
}
友元
如果我要访问私有的x的话,那么我就需要改变一下D,将这个函数声明为友元函数
class D {
private:
int x;
public:
int y;
D(int x, int y): x(x), y(y) {}
friend ostream & operator<<(ostream &os, const D &d);
};
ostream & operator<<(ostream &os, const D &d) {
return os << "y: " << d.y << ", x: " << d.x;
}
网友评论