- ベストアンサー
関数の多重定義(同一タイプの「リファレンス」「値渡し」)
目黒@C++学習中 です。 下記のソースの実行結果が c:\c++oo\pointline\clspoint.h(27) : 値渡し P(7,7) c:\c++oo\pointline\clspoint.h(27) : 値渡し P(7,7) となります。 同一タイプの「リファレンス」と「値渡し」の 多重定義は可能なのでしょうか? それとも、もっと基本的な間違え? [環境]NT4 VC6.0(SP3) #include "clsPoint.h" int main() { Point oP1(2,5); Point oP2(5,2); Point oP3; Point& opP1 = oP1; Point& opP2 = oP2; oP3 = opP1 + opP2; oP3 = oP1 + oP2; cout << oP3 << endl; return 0; } #include <float.h> #include <crtdbg.h> typedef const double cdouble; class Point; typedef const Point cPoint; cdouble dNULL = DBL_MAX; class Point { private: double m_dX; double m_dY; public: Point() : m_dX(dNULL), m_dY(dNULL){}; Point(cdouble dX, cdouble dY) : m_dX(dX), m_dY(dY){}; public: Point operator + (cPoint& oP2) { _RPTF2(_CRT_WARN,"リファレンスP(%g,%g)\n",m_dX+oP2.m_dX , m_dY+oP2.m_dY); return Point(m_dX+oP2.m_dX , m_dY+oP2.m_dY); } Point operator + (cPoint oP2) { _RPTF2(_CRT_WARN,"値渡し P(%g,%g)\n",m_dX+oP2.m_dX , m_dY+oP2.m_dY); return Point(m_dX+oP2.m_dX , m_dY+oP2.m_dY); } };
- みんなの回答 (2)
- 専門家の回答