早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++求解急急急急急急04、下列关于运算符重载的叙述中,正确的是()。A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符

题目详情
c++求解 急急急急急急
04、下列关于运算符重载的叙述中,正确的是( )。
A)通过运算符重载,可以定义新的运算符 B)有的运算符只能作为成员函数重载
C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参
▼优质解答
答案和解析
#include using namespace std;class Point{ public: explicit Point(float x = 0.0f, float y = 0.0f):m_x(x), m_y(y) {} ~Point() {} void setX(float x) { m_x = x; } void setY(float y) { m_y = y; } float getX() const { return m_x; } float getY() const { return m_y; } Point operator+(Point p) { return Point(m_x + p.getX(), m_y + p.getY()); } private: float m_x; float m_y;};class Circle{ public: Circle(float x, float y, float radius) { m_pCenter = new Point(x, y); m_radius = radius; } ~Circle() {} Circle operator+(Point p) { return Circle(m_pCenter->getX() + p.getX(), m_pCenter->getY() + p.getY(), m_radius); } Point *getCenter() { return m_pCenter; } void setCenter(float x, float y) { m_pCenter->setX(x); m_pCenter->setY(y); } float getRadius() { return m_radius; } void setRadius(float radius) { m_radius = radius; } private: float m_radius; Point *m_pCenter;};int main(){ Point pA(5, 5); Point pB(5, 5); Point pC = pA + pB; cout << "Point pA(" << pA.getX() << ", " << pA.getY() << "), pB(" << pB.getX() << ", " << pB.getY() << "), pA + pB = pC(" << pC.getX() << ", " << pC.getY() << ")\n"; Circle c1(0, 0, 10); cout << "c1's center : " << c1.getCenter()->getX() << ", " << c1.getCenter()->getY() << endl; c1 = c1 + pC; cout << "After c1 + pC: " << c1.getCenter()->getX() << ", " << c1.getCenter()->getY() << endl; system("pause");}嘛 半夜睡不着无聊了,Point应该用结构更好的。
上面是一个完整程序。 main 函数执行结果:
打字不易,如满意,望采纳。
看了c++求解急急急急急急04、下...的网友还看了以下: