7-2 友元类Cvector
分数 19
作者 谢颂华
单位 武汉理工大学
定义复数类CComplex和二维向量类CVector。
复数类具有实部real和虚部imag,定义构造函数。
二维向量有两个向量x和y,定义转换函数Change()和输出显示函数Print()。
在类CComplex中定义友元类CVector,实现将复数转换为二维向量,即real 赋值给x、 imag赋值给y。
输入样例1:
输入复数的实部和虚部
1.2 3.4
输出样例1:
第一行输出复数的real和imag,第二行输出转换后的向量的x和y
complex:1.2+3.4i
vector:(1.2,3.4)
输入样例2:
输入复数的实部和虚部
1.2 -3.4
输出样例2:
第一行输出复数的real和imag,第二行输出转换后的向量的x和y
complex:1.2-3.4i
vector:(1.2,-3.4)
#include <iostream>
using namespace std;class CVector; // 声明CVector类以便在CComplex类中使用class CComplex {
private:double real;double imag;public:CComplex(double r, double i) : real(r), imag(i) {}friend class CVector; // 声明CVector为CComplex的友元类void displayComplex() {cout << "complex:" << real << ((imag >= 0) ? "+" : "") << imag << "i" << endl;}
};class CVector {
private:double x;double y;public:CVector(CComplex &c) : x(c.real), y(c.imag) {}void displayVector() {cout << "vector:(" << x << "," << y << ")" << endl;}
};int main() {double r, i;cin >> r >> i;CComplex complex(r, i);complex.displayComplex();CVector vector(complex);vector.displayVector();return 0;
}