c++におけるoperator操作
2122 ワード
opencv Point2f operator , , 。 , , , , , 。
#include
using namespace std;
class Point
{
public:
int x, y;
Point(){ x = 0; y = 0; }
Point(int _x, int _y){ x = _x; y = _y; }
Point & operator - (Point & pt)
{
x = x - pt.x;
y = y - pt.y;
return Point(x, y);
}
Point & operator + (Point & pt)
{
x = x + pt.x;
y = y + pt.y;
return Point(x, y);
}
};
class Demo {
public:
Demo() {
a = 1;
b = 1;
}
Demo(int pa, int pb) {
a = pa;
b = pb;
}
Demo(Point &pt) : a(pt.x), b(pt.y)
{
/*a = pt.x;
b = pt.y;*/
}
Demo& operator + (const Demo& p) {
Demo demo;
demo.a = this->a + p.a;
demo.b = this->b + p.b;
return demo;
}
Demo &operator - (const Demo& p)
{
Demo demo;
demo.a = this->a - p.a;
demo.b = this->b - p.b;
return demo;
}
Demo &operator *= (const double & s)
{
a *= s;
b *= s;
return Demo(a, b);
}
Demo &operator * (const double &s)
{
this->a = this->a * s;
this->b = this->b * s;
return *this;//Demo(a, b);
}
Demo & operator = (const Point &pt)
{
return Demo(pt.x, pt.y);
}
operator Point() const
{
return Demo(a, b);
}
void do_something() {
std::cout << a + b << std::endl;
}
private:
int a;
int b;
};
int main()
{
Demo d1(2, 6);
d1.do_something();
Demo d2(10, 24);
d2.do_something();
Demo d3;
d3 = d1 + d2;
d3.do_something();
Demo d4;
d4 = ((d1 + d2)) * 0.5; // , Demo(Point &pt) : a(pt.x), b(pt.y) ,
d4 = ((d1 + d2)) ;
d4 *= 0.5;
d4.do_something();
Point p1(20, 10), p2(10, 20);
Demo d5;
d5 = Demo((p1 - p2));// , Demo &operator * (const double &s) ,
d5 = Demo(Point(p1 - p2));
d5.do_something();
/*Point2f pt0, pt1, pt2;
pt0 = Point2f(2, 0);
pt1 = Point2f(5, 0);
pt2 = Point2f(0, 5);
XK_RotatedRect rect;
rect = XK_RotatedRect(pt0, pt1, pt2);
*/
return 1;
}
参照先:http://pydoing.blogspot.com/2013/02/cpp-overload-operator.html