関数の多重定義(同一タイプの「リファレンス」「値渡し」)
目黒@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);
}
};
お礼
どうもありがとうございました。
補足
shirousa01さん、ありがとうございました。 まだ2月より勉強し始めたところで、 usr_function(@hairetsu1,@hairetsu2) では配列がくっつくこともしらず、とても参考になりました。 Logでリファレンスした中身を見ると HASH(0x18afe98) といった形で記述してあったので、てっきりアドレスだと思っていました。でも、物理的には違っても考え方はそれでいい、ってことで理解してよろしいでしょうか?