编写一个程序,定义一个复数类,含实部和虚部两个数据成员,再定义一个坐标类Point,含有横坐标和纵坐标两个数据成员,该类中有一个成员函数print(),可以输出一个点的横坐标和纵坐标,并且该函数为复数类的友元函数,可以输出得数的实部和虚部。
时间: 2024-05-07 20:16:41 浏览: 84
编写一个程序,获得一个数的实数部分和虚数部分,并打印
好的,让我来帮您回答这个问题。
首先,我们需要定义一个复数类Complex,如下所示:
```
class Complex {
private:
double real; // 实部
double imag; // 虚部
public:
Complex(double r=0, double i=0) : real(r), imag(i) {}
friend void print(const Complex& c); // 友元函数
};
```
接着,我们定义一个坐标类Point,如下所示:
```
class Point {
private:
double x; // 横坐标
double y; // 纵坐标
public:
Point(double x=0, double y=0) : x(x), y(y) {}
void print() const { // 成员函数
std::cout << "(" << x << ", " << y << ")" << std::endl;
}
friend void print(const Complex& c); // 友元函数
};
```
注意,在Point类中也定义了一个名为print的函数,但这个函数的作用是输出一个点的横坐标和纵坐标,与复数类中定义的print函数不同。这在C++中被称为函数重载。
最后,我们需要定义复数类中的print函数,这个函数是Point类的友元函数,可以输出得数的实部和虚部,如下所示:
```
void print(const Complex& c) { // 友元函数
std::cout << "Real: " << c.real << ", Imag: " << c.imag << std::endl;
}
```
这样,我们就完成了编写一个程序,定义一个复数类,含实部和虚部两个数据成员,再定义一个坐标类Point,含有横坐标和纵坐标两个数据成员,该类中有一个成员函数print(),可以输出一个点的横坐标和纵坐标,并且该函数为复数类的友元函数,可以输出得数的实部和虚部。
阅读全文