请问如何采用 C 语言,通过定义成员函数的方法对二维空间点类 point 重载前置单目运算符 和 -- 。

[复制链接]
查看11 | 回复1 | 2011-5-27 12:48:26 | 显示全部楼层 |阅读模式
采用C语言,通过定义成员函数的方法对二维空间点类point重载前置单目运算符和--。

提示:(1)定义二维空间点类point,其私有成员为浮点数x和y,并在构造函数中通过两个形式参数完成对x和y的初始化,默认值均为0;

(2)定义公有成员函数floatget_x()和floatget_y()分别用于取得点坐标x和y值;

(3)在重载双目运算符和--的函数定义中要求判断x和y的坐标范围,为(0,0)到(640,480),否则运算无效;

(4)主函数main中通过键盘输入坐标点值,然后通过该坐标值初始化点对象p,接着通过一个循环用运算符递增输出该点的后5个坐标点,再通过第二个循环用--运算符递减输出5个点。程序中的两个循环体中的输出语句为分别为:

cout\"p:x=\"p.get_x()\",y=\"p.get_y()endl;p;和cout\"p:x=\"p.get_x()\",y=\"p.get_y()endl;--p;
回复

使用道具 举报

千问 | 2011-5-27 12:48:26 | 显示全部楼层
#includeiostream
usingnamespacestd;

classpoint
{
public:
        point(){}
        point(floatx,floaty);

        floatget_x();
        floatget_y();
        pointoperator();
        pointoperator(inta);
        pointoperator--();
        pointoperator--(inta);

private:
        floatv_x;
        floath_y;
};

point::point(floatx,floaty)
        :v_x(x),h_y(y)
{
}

floatpoint::get_x()
{returnv_x;}

floatpoint::get_y()
{returnh_y;}

pointpoint::operator()
{
        if(v_x0||v_x639||h_y0||h_y479);
        else
        {
                v_x=1;
                h_y=1;
        }
        return*this;
}

pointpoint::operator(inta)
{
        if(v_x0||v_x639||h_y0||h_y479);
        else
        {
                pointtemp(v_x,h_y);
                v_x=1;
                h_y=1;
                returntemp;
        }
        return*this;
}

pointpoint::operator--()
{
        if(v_x1||v_x640||h_y1||h_y480);
        else
        {
                v_x-=1;
                h_y-=1;
        }
        return*this;
}

pointpoint::operator--(inta)
{
        if(v_x1||v_x640||h_y1||h_y480);
        else
        {
                pointtemp(v_x,h_y);
                v_x-=1;
                h_y-=1;
                returntemp;
        }
        return*this;
}

intmain()
{
        floata,b;
        cout\"输入x和y坐标:\"endl;
        cinab;
        pointp(a,b);
        inti;
        for(i=0;i5;i)
        {
                cout\"p:x=\"p.get_x()\",y=\"p.get_y()endl;
                p;
        }
        for(i=0;i5;i)
        {
                cout\"p:x=\"p.get_x()\",y=\"p.get_y()endl;
                --p;
        }

        system(\"pause\");
        return0;
}
有什么问题可以问我
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行