建站教程的特点互联网客户做网站
2026/6/9 19:22:11 网站建设 项目流程
建站教程的特点,互联网客户做网站,网络营销案例,网页开发软件有哪些6.再谈重载#xff1a;一个矢量类位移矢量指的是从何处开始到何处结束#xff0c;而不是经过的路线。VECTOR.h#pragma once #ifndef VECTOR_H__ #define VECTOR_H__ #include iostream using namespace std; namespace Vector {class VECTOR1{public:enum Mode { REC…6.再谈重载一个矢量类位移矢量指的是从何处开始到何处结束而不是经过的路线。VECTOR.h#pragma once #ifndef VECTOR_H__ #define VECTOR_H__ #include iostream using namespace std; namespace Vector { class VECTOR1 { public: enum Mode { RECT, POL }; private: double x; // horizontal value double y; // vertical value double mag; // length of vector double ang; // direction of vector in degrees Mode mode; // RECT or POL // private methods for setting values void set_mag(); void set_ang(); void set_x(); void set_y(); public: VECTOR1(); VECTOR1(double n1, double n2, Mode form RECT); void reset(double n1, double n2, Mode form RECT); double xval() const { return x; } // report x value double yval() const { return y; } // report y value double magval() const { return mag; } // report magnitude double angval() const { return ang; } // report angle void polar_mode() { mode RECT; }; // set mode to POL void rect_mode() { mode POL; }; // set mode to RECT ​ VECTOR1 operator(const VECTOR1 b) const; VECTOR1 operator-(const VECTOR1 b) const; VECTOR1 operator-() const; VECTOR1 operator*(double n) const; ​ friend VECTOR1 operator*(double n, const VECTOR1 a); friend ostream operator(ostream os, const VECTOR1 v); }; }; ​ #endif ​,VECTOR.cpp#include VECTOR.h #include cmath namespace Vector { ​ //double num 180.0 / 3.14159265358979323846; const double num 45.0 / atan(1.0); void VECTOR1::set_mag() { mag sqrt(x * x y * y); } ​ void VECTOR1::set_ang() { if (x 0.0 y 0.0) { ang 0.0; } else { ang atan2(y, x); } } ​ void VECTOR1::set_x() { x mag * cos(ang); } ​ void VECTOR1::set_y() { y mag * sin(ang); } ​ VECTOR1::VECTOR1() { x y mag ang 0.0; mode RECT; } ​ VECTOR1::VECTOR1(double n1, double n2, Mode form) { mode form; if (form RECT) { x n1; y n2; set_mag(); set_ang(); } else if (form POL) { mag n1; ang n2 / num; set_x(); set_y(); cout ang ang mag mag endl; } else { cout Incorrect 3rd argument to VECTOR() -- ; cout vector set to 0\n; x y mag ang 0.0; mode RECT; } } ​ void VECTOR1::reset(double n1, double n2, Mode form) { mode form; if (form RECT) { x n1; y n2; set_mag(); set_ang(); } else if (form POL) { mag n1; ang n2 / num; set_x(); set_y(); } else { cout Incorrect 3rd argument to VECTOR() -- ; cout vector set to 0\n; x y mag ang 0.0; mode RECT; } } ​ VECTOR1 VECTOR1::operator(const VECTOR1 b) const { VECTOR1 temp; temp.x x b.x; temp.y y b.y; temp.set_mag();//类适合在一个对象中表示实体的不同方面(直角坐标和极坐标) temp.set_ang(); return temp; }//按照这种重载方式不仅要更新直角坐标还要更新极坐标 //按照下面用构造函数的方式就方便的多 VECTOR1 VECTOR1::operator-(const VECTOR1 b) const { return VECTOR1(x - b.x, y - b.y); } VECTOR1 VECTOR1::operator-() const { return VECTOR1(-x, -y); } VECTOR1 VECTOR1::operator*(double n) const { return VECTOR1(n * x, n * y); } ​ VECTOR1 operator*(double n, const VECTOR1 a) { return a * n; } ​ ostream operator(ostream os, const VECTOR1 v) { if (v.mode VECTOR1::RECT) { os (x,y) ( v.x , v.y ); } else if (v.mode VECTOR1::POL) { os (m,a) ( v.mag , v.ang ); //cout d v.mag v.ang * num; } else { os Vector object mode is invalid; } return os; } }main.cpp// VECTOR.cpp : 此文件包含 main 函数。程序执行将在此处开始并结束。 // ​ #include iostream #include VECTOR.h using namespace Vector; int main() { std::cout Hello World!\n; VECTOR1 a VECTOR1(3.0, 4.0, VECTOR1::POL); VECTOR1 B VECTOR1(6.0, 4.0, VECTOR1::RECT); VECTOR1 d VECTOR1(8.0, 6.0, VECTOR1::POL); /*VECTOR1 a VECTOR1(3.0, 4.0, RECT);*/ cout a: a endl; cout B: B endl; VECTOR1 c; c a B; cout caB: c endl; c a - B; cout ca-B: c endl; c -d; cout c-d: c endl; return 0; } ​ // 运行程序: Ctrl F5 或调试 “开始执行(不调试)”菜单 // 调试程序: F5 或调试 “开始调试”菜单 ​ // 入门使用技巧: // 1. 使用解决方案资源管理器窗口添加/管理文件 // 2. 使用团队资源管理器窗口连接到源代码管理 // 3. 使用输出窗口查看生成输出和其他消息 // 4. 使用错误列表窗口查看错误 // 5. 转到“项目”“添加新项”以创建新的代码文件或转到“项目”“添加现有项”以将现有代码文件添加到项目 // 6. 将来若要再次打开此项目请转到“文件”“打开”“项目”并选择 .sln 文件 ​类适合在一个对象中表示实体的不同方面

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询