| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 886 人关注过本帖
标题:一段老的代码,关于重载的
只看楼主 加入收藏
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
 问题点数:0 回复次数:7 
一段老的代码,关于重载的
//point.h #ifndef POINT_CPP #define POINT_CPP class point{ protected: double x,y; public:point(double xx=0,double yy=0){ x=xx;y=yy; } point operator=(point); double magnitude(); double angle(); point operator+(point); /* #ifndef _ZTC_ point operator+(); #endif */ point operator-(point); // point operator-(); point operator*(double); point operator/(double); point operator%(point); point operator+=(point); point operator-=(point); point operator*=(double); point operator/=(double); point operator%=(point); point operator++(); point operator--(); point operator[](double); point operator<<(double); point operator>>(double); point operator<<=(double); point operator>>=(double); bool operator<(point); bool operator>(point); bool operator<=(point); bool operator>=(point); bool operator==(point); bool operator!=(point); bool operator!(); bool operator&&(point); bool operator||(point); double operator&(point); double operator|(point); double operator^(point); point operator&=(point); point operator|=(point); point operator^=(point); void print(char* msg=""); }; #endif //point.cpp #include "point.h" #include <math.h> #include <stdio.h> const double tiny=0.0001; point point::operator=(point rv){ x=rv.x; y=rv.y; return *this; } double point::magnitude(){ return sqrt(x*x+y*y); } double point::angle(){ return atan2(y,x); } point point::operator+(point p){ return point(x+p.x,y+p.y); } /*#ifndef _ZTC_ point point::operator+(){ return *this; } #endif*/ point point::operator-(point p){ return point(x-p.x,y-p.y); } /*point point::operator-(){ return point(-x,-y); }*/ point point::operator*(double f){ return point(x*f,y*f); } point point::operator/(double f){ return point(x/f,y/f); } point point::operator%(point p){ return point(fmod(x,p.x),fmod(y,p.y)); } point point::operator+=(point p){ x+=p.x; y+=p.y; return *this; } point point::operator-=(point p){ x-=p.x; y-=p.y; return *this; } point point::operator*=(double f){ x*=f; y*=f; return *this; } point point::operator/=(double f){ x/=f; y/=f; return *this; } point point::operator%=(point p){ x=floor(x/p.x); y=floor(y/p.y); return *this; } point point::operator++(){ x+=1.0; y+=1.0; return *this; } point point::operator--(){ x-=1.0; y-=1.0; return *this; } point point::operator[](double f){ double new_x=magnitude()*cos(angle()*f); double new_y=magnitude()*sin(angle()*f); return point(new_x,new_y); } point point::operator<<(double f){ return point(x+f,y); } point point::operator>>(double f){ return point(x,y+f); } point point::operator<<=(double f){ x+=f; return *this; } point point::operator>>=(double f){ y+=f; return *this; } bool point::operator<(point p){ if(x<p.x&&y<p.y) return true; return false; } bool point::operator>(point p){ if(x>p.x&&y>p.y) return true; return false; } bool point::operator<=(point p){ if(x<=p.x&&y<=p.y) return true; return false; } bool point::operator>=(point p){ if(x>=p.x&&y>=p.y) return true; return false; } bool point::operator==(point p){ if(x==p.x&&y==p.y) return true; return false; } bool point::operator!=(point p){ if(x!=p.x&&y!=p.y) return true; return false; } bool point::operator!(){ if(fabs(x)<tiny&&fabs(y)<tiny) return true; return false; } bool point::operator&&(point p){ if(fabs(x)<tiny&&fabs(y)<tiny) return false; if(fabs(p.x)<tiny &&fabs(p.y)<tiny) return false; return true; } bool point::operator||(point p){ if(fabs(x)<tiny&&fabs(y)<tiny&&fabs(p.x)<tiny&&fabs(p.y)<tiny) return false; return true; } double point:: operator&(point p){ return magnitude()*p.magnitude()*sin(point::operator^(p)); } double point::operator|(point p){ return magnitude()*p.magnitude()*cos(point::operator^(p)); } double point::operator^(point p){ return fabs(angle()-p.angle()); } point point::operator&=(point p){ double cross = magnitude()*p.magnitude()*sin(point::operator^(p)); x*=cross; y*=cross; return *this; } point point::operator|=(point p){ double dot=magnitude()*p.magnitude()*cos(point::operator^(p)); x*=dot; y*=dot; return *this; } point point::operator^=(point p){ double arc=fabs(angle()-p.angle()); x*=arc; y*=arc; return *this; } void point::print(char* msg){ if(*msg) printf("%s:",msg); printf("x=%f,y=%f\n",x,y); } int main(){ point A,B(1.1,2.2),C(3.3,4.4),D(5.5,6.6); B.print("B"); C.print("C"); D.print("D"); A=B+C-D; A.print("A=B+C-D"); A+=(B<<8.2)+(D>>4.1); A.print("A+=(B<<8.2)+(D>>4.1)"); printf("magnitude of A=%f, angle of A=%f\n",A.magnitude(),A.angle()); printf("Angle C^D=%f\n",C^D); return 1; }

[此贴子已经被作者于2005-9-22 15:28:39编辑过]

搜索更多相关主题的帖子: 代码 重载 
2005-09-22 15:26
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
调了一下,这段老代码。
注释掉的地方没法实现了,求点的正,负函数出问题了。不知道问什么,希望有人能帮我看看。。。
还有在dev c++上该怎么调这段代码呢,
主要是关于头文件
#include "point"还是#include "point.h"
最后要不要用 using namespace std;
我知道gc++编译有些不同。

http://kongfuziandlife. http://codeanddesign.
2005-09-22 15:34
ginger
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-7-1
收藏
得分:0 
我把你的原码在Dev—c++中编译没有错啊

潜水的猫
2005-09-22 19:25
ginger
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-7-1
收藏
得分:0 
   B:x=1.100000,y=2.200000
C:x=3.300000,y=4.400000
D:x=5.500000,y=6.600000
A=B+C-D:x=-1.100000,y=0.000000
A+=(B&lt;&lt;8.2)+(D&gt;&gt;4.1):x=13.700000,y=12.900000
magnitude of A=18.817545, angle of A=0.755332
Angle C^D=0.051237

潜水的猫
2005-09-22 19:34
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
恩,恩,老kai 再帮我看一下那些注释的函数出了些什么问题?
先谢谢ginger 了,是刚才编译的时候不仔细

http://kongfuziandlife. http://codeanddesign.
2005-09-22 20:43
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
既然没有错,还要我看啥?
你有什么想不通的,把想不通的地方说出来,我再来帮你看。

我正在写我的Java程序,时而休息一下,上来看看大家。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-09-22 23:50
zinking
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:916
专家分:0
注 册:2004-12-5
收藏
得分:0 
原来注释的地方是要实现 相反数 (也就是负号)的重载的 即 -p
但是好像不行!!!!
该怎么实现呢?

http://kongfuziandlife. http://codeanddesign.
2005-09-23 12:05
论坛元老
Rank: 1
等 级:新手上路
帖 子:812
专家分:0
注 册:2008-3-31
收藏
得分:0 
新手,学习中,支持
2008-04-02 15:16
快速回复:一段老的代码,关于重载的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031061 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved