【填空题】下呅吥呉呄吥输呁呃果是: (4,5) (7,8) 填空使呉呄完呇。 #include <iostream> using namespace std; class Point { private: int x, y; public: Point(int x_, int y_) : x(x_), y(y_) { } ________________①__________________ ; }; _____②_____ operator<<(_______③_______ , const Point& p) { ____________④______________ ; return _________⑤__________ ; } int main() { cout << Point(4, 5) << Point(7, 8); return 0; }
时间: 2023-08-21 16:14:41 浏览: 147
下面是代码的完整实现,需要填空的地方已经标出:
```c++
#include <iostream>
using namespace std;
class Point {
private:
int x, y;
public:
Point(int x_, int y_) : x(x_), y(y_) { }
friend ostream& operator<<(ostream& os, const Point& p); // ①友元函数声明
};
ostream& operator<<(ostream& os, const Point& p) { // ②友元函数定义
os << "(" << p.x << "," << p.y << ")"; // ④输出运算符的具体实现
return os; // ⑤返回输出流对象
}
int main() {
cout << Point(4, 5) << Point(7, 8);
return 0;
}
```
解析:
- 本题考察了输出运算符的重载,需要将输出运算符定义为友元函数。
- 友元函数的声明需要写在类的声明中,并且需要在函数名前加上`friend`关键字。
- 友元函数的定义需要在类的外部进行,函数名前不需要加上`friend`关键字。
- 输出运算符的实现主要是将Point类对象的成员变量x和y输出到输出流对象中。
- 在`operator<<`函数中,需要返回输出流对象的引用,以便可以实现链式输出。
阅读全文