Message-ID: <360AD0D9.1D22@arcticmail.com> From: Nick J Chackowsky Reply-To: nick AT arcticmail DOT com MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Developing a Rational Unit Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 43 Date: Thu, 24 Sep 1998 21:11:27 GMT NNTP-Posting-Host: 142.13.16.203 NNTP-Posting-Date: Thu, 24 Sep 1998 16:11:27 CDT Organization: MBnet Networking Inc. To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Mighty impressed by this DJGPP stuff, folks! I can't believe it's free; I'm letting a LOT of people know about it. I teach computer science to high school students, and have been gradually developing a rational number unit with them, first representing fractions as discrete integers, then as a structure, and now, as a class. There certainly seem to be a LOT of ways of handling the overloading of operators in a situation like this. I've seen: class Rat { int num, den; public: ... Rat operator + (Rat r); ... }; as well as Rat operator +(Rat left, Rat right); which is NOT declared within the scope of the class. And finally, *something* like: friend Rat operator + (...?...); I'm wondering if there is a preferred method of declaring and implementing overloaded operators of this sort. I've managed to get methods 1 and 2 working, but I really don't properly understand the third method yet. Perhaps someone could point me to a good source? My current source is: Lambert and Nance, _Fundamentals of C++: Understanding Programming and Problem Solving_ which is GOOD, but introduces a construct such as int numerator() const; (an accessor to the class's numerator) without explaining the reason for the const keyword, or istream& operator >> (...) without explaining the & in that context. I clearly need something a bit better as a text. Perhaps someone knows of a free (hope hope hope) source with modern code constructs explained? Nick.