A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FOverload%2FCompare</id>
		<title>C++/Overload/Compare - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FOverload%2FCompare"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Overload/Compare&amp;action=history"/>
		<updated>2026-04-18T18:06:11Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Overload/Compare&amp;diff=2015&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Overload/Compare&amp;diff=2015&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Overload/Compare&amp;diff=2016&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Overload/Compare&amp;diff=2016&amp;oldid=prev"/>
				<updated>2010-05-25T10:28:25Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Define ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;
#include &amp;lt;string&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class Employee {&lt;br /&gt;
  string name;&lt;br /&gt;
  unsigned number;&lt;br /&gt;
public:&lt;br /&gt;
  Employee() { name = &amp;quot;&amp;quot;; number = 0; }&lt;br /&gt;
  Employee(string n, unsigned num) {&lt;br /&gt;
    name = n;&lt;br /&gt;
    number = num;&lt;br /&gt;
  }&lt;br /&gt;
  string get_name() { return name; }&lt;br /&gt;
  unsigned get_number() { return number; }&lt;br /&gt;
};&lt;br /&gt;
void show(vector&amp;lt;Employee&amp;gt; vect) {&lt;br /&gt;
  vector&amp;lt;Employee&amp;gt;::iterator itr;&lt;br /&gt;
  for(itr=vect.begin(); itr != vect.end(); ++itr)&lt;br /&gt;
    cout &amp;lt;&amp;lt; itr-&amp;gt;get_number() &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; itr-&amp;gt;get_name() &amp;lt;&amp;lt; endl;;&lt;br /&gt;
}&lt;br /&gt;
bool operator&amp;lt;(Employee a, Employee b){&lt;br /&gt;
  return a.get_number() &amp;lt; b.get_number();&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  vector&amp;lt;Employee&amp;gt; employeeList;&lt;br /&gt;
  employeeList.push_back(Employee(&amp;quot;A&amp;quot;, 9));&lt;br /&gt;
  employeeList.push_back(Employee(&amp;quot;B&amp;quot;, 8));&lt;br /&gt;
  employeeList.push_back(Employee(&amp;quot;C&amp;quot;, 6));&lt;br /&gt;
  employeeList.push_back(Employee(&amp;quot;D&amp;quot;, 1));&lt;br /&gt;
  show(employeeList);&lt;br /&gt;
  sort(employeeList.begin(), employeeList.end());&lt;br /&gt;
  show(employeeList);&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==overloaded &amp;quot;==&amp;quot; operator compares strings==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
class String{&lt;br /&gt;
   private:&lt;br /&gt;
      enum { SZ = 80 };&lt;br /&gt;
      char str[SZ];&lt;br /&gt;
   public:&lt;br /&gt;
      String(){ strcpy(str, &amp;quot;&amp;quot;); }&lt;br /&gt;
      String( char s[] ){ strcpy(str, s); }&lt;br /&gt;
      void display() const{ cout &amp;lt;&amp;lt; str; }&lt;br /&gt;
      void getstr(){ cin.get(str, SZ); }&lt;br /&gt;
      bool operator == (String ss) const{&lt;br /&gt;
         return ( strcmp(str, ss.str)==0 ) ? true : false;&lt;br /&gt;
      }&lt;br /&gt;
   };&lt;br /&gt;
int main(){&lt;br /&gt;
   String s1 = &amp;quot;yes&amp;quot;;&lt;br /&gt;
   String s2 = &amp;quot;no&amp;quot;;&lt;br /&gt;
   String s3;&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\nEnter &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;: &amp;quot;;&lt;br /&gt;
   s3.getstr();&lt;br /&gt;
   if(s3==s1)&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;You typed yes\n&amp;quot;;&lt;br /&gt;
   else if(s3==s2)&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;You typed no\n&amp;quot;;&lt;br /&gt;
   else&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;You didn&amp;quot;t follow instructions\n&amp;quot;;&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==overloaded &amp;quot;==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class Distance&lt;br /&gt;
   {&lt;br /&gt;
   private:&lt;br /&gt;
      int feet;&lt;br /&gt;
      float inches;&lt;br /&gt;
   public:&lt;br /&gt;
      Distance() : feet(0), inches(0.0){ }&lt;br /&gt;
      Distance(int ft, float in) : feet(ft), inches(in) {  }&lt;br /&gt;
      void getdist(){&lt;br /&gt;
         cout &amp;lt;&amp;lt; &amp;quot;\nEnter feet: &amp;quot;;  cin &amp;gt;&amp;gt; feet;&lt;br /&gt;
         cout &amp;lt;&amp;lt; &amp;quot;Enter inches: &amp;quot;;  cin &amp;gt;&amp;gt; inches;&lt;br /&gt;
      }&lt;br /&gt;
      void showdist() const{ &lt;br /&gt;
         cout &amp;lt;&amp;lt; feet &amp;lt;&amp;lt; &amp;quot;\&amp;quot;-&amp;quot; &amp;lt;&amp;lt; inches &amp;lt;&amp;lt; &amp;quot;\&amp;quot;&amp;quot;; &lt;br /&gt;
      }&lt;br /&gt;
      bool operator &amp;lt; (Distance) const;  &lt;br /&gt;
};&lt;br /&gt;
bool Distance::operator &amp;lt; (Distance d2) const{&lt;br /&gt;
   float bf1 = feet + inches/12;&lt;br /&gt;
   float bf2 = d2.feet + d2.inches/12;&lt;br /&gt;
   return (bf1 &amp;lt; bf2) ? true : false;&lt;br /&gt;
}&lt;br /&gt;
int main(){&lt;br /&gt;
   Distance dist1;                 &lt;br /&gt;
   dist1.getdist();                &lt;br /&gt;
   Distance dist2(6, 2.5);         &lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\ndist1 = &amp;quot;;  dist1.showdist();&lt;br /&gt;
   cout &amp;lt;&amp;lt; &amp;quot;\ndist2 = &amp;quot;;  dist2.showdist();&lt;br /&gt;
   if( dist1 &amp;lt; dist2 )             &lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;\ndist1 is less than dist2&amp;quot;;&lt;br /&gt;
   else&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;\ndist1 is greater than (or equal to) dist2&amp;quot;;&lt;br /&gt;
   cout &amp;lt;&amp;lt; endl;&lt;br /&gt;
   return 0;&lt;br /&gt;
}&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overloading Equality and Inequality Operators==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class CDate&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
    int m_nDay;&lt;br /&gt;
    int m_nMonth;&lt;br /&gt;
    int m_nYear;&lt;br /&gt;
   void AddDays (int nDaysToAdd);&lt;br /&gt;
   void AddMonths (int nMonthsToAdd);&lt;br /&gt;
    void AddYears (int m_nYearsToAdd);&lt;br /&gt;
public:&lt;br /&gt;
    CDate (int nDay, int nMonth, int nYear)&lt;br /&gt;
          : m_nDay (nDay), m_nMonth (nMonth), m_nYear (nYear) {};&lt;br /&gt;
    void DisplayDate ()&lt;br /&gt;
    {&lt;br /&gt;
        cout &amp;lt;&amp;lt; m_nDay &amp;lt;&amp;lt; &amp;quot; / &amp;quot; &amp;lt;&amp;lt; m_nMonth &amp;lt;&amp;lt; &amp;quot; / &amp;quot; &amp;lt;&amp;lt; m_nYear &amp;lt;&amp;lt; endl;&lt;br /&gt;
    }&lt;br /&gt;
    // integer conversion operator&lt;br /&gt;
    operator int();&lt;br /&gt;
    // equality operator that helps with: if (mDate1 == mDate2)...&lt;br /&gt;
    bool operator == (const CDate&amp;amp; mDateObj);&lt;br /&gt;
    // overloaded equality operator that helps with: if (mDate == nInteger)&lt;br /&gt;
    bool operator == (int nDateNumber);&lt;br /&gt;
    // inequality operator&lt;br /&gt;
    bool operator != (const CDate&amp;amp; mDateObj);&lt;br /&gt;
    // overloaded inequality operator for integer types&lt;br /&gt;
    bool operator != (int nDateNumber);&lt;br /&gt;
};&lt;br /&gt;
CDate::operator int()&lt;br /&gt;
{&lt;br /&gt;
   return ((m_nYear * 10000) + (m_nMonth * 100) + m_nDay);&lt;br /&gt;
}&lt;br /&gt;
// equality operator that helps with if (mDate1 == mDate2)...&lt;br /&gt;
bool CDate::operator == (const CDate&amp;amp; mDateObj)&lt;br /&gt;
{&lt;br /&gt;
    return ( (mDateObj.m_nYear == m_nYear)&lt;br /&gt;
            &amp;amp;&amp;amp; (mDateObj.m_nMonth == m_nMonth)&lt;br /&gt;
           &amp;amp;&amp;amp; (mDateObj.m_nDay == m_nDay) );&lt;br /&gt;
}&lt;br /&gt;
bool CDate::operator == (int nDateNumber)&lt;br /&gt;
{&lt;br /&gt;
    return nDateNumber == (int)*this;&lt;br /&gt;
}&lt;br /&gt;
// inequality operator&lt;br /&gt;
bool CDate::operator != (const CDate&amp;amp; mDateObj)&lt;br /&gt;
{&lt;br /&gt;
    return !(this-&amp;gt;operator== (mDateObj));&lt;br /&gt;
}&lt;br /&gt;
bool CDate::operator != (int nDateNumber)&lt;br /&gt;
{&lt;br /&gt;
    return !(this-&amp;gt;operator == (nDateNumber));&lt;br /&gt;
}&lt;br /&gt;
void CDate::AddDays (int nDaysToAdd)&lt;br /&gt;
{&lt;br /&gt;
    m_nDay += nDaysToAdd;&lt;br /&gt;
   if (m_nDay &amp;gt; 30)&lt;br /&gt;
   {&lt;br /&gt;
       AddMonths (m_nDay / 30);&lt;br /&gt;
       m_nDay %= 30;    // rollover 30th -&amp;gt; 1st&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
void CDate::AddMonths (int nMonthsToAdd)&lt;br /&gt;
{&lt;br /&gt;
   m_nMonth += nMonthsToAdd;&lt;br /&gt;
   if (m_nMonth &amp;gt; 12)&lt;br /&gt;
   {&lt;br /&gt;
       AddYears (m_nMonth / 12);&lt;br /&gt;
       m_nMonth %= 12;    // rollover dec -&amp;gt; jan&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
void CDate::AddYears (int m_nYearsToAdd)&lt;br /&gt;
{&lt;br /&gt;
   m_nYear += m_nYearsToAdd;&lt;br /&gt;
}&lt;br /&gt;
int main ()&lt;br /&gt;
{&lt;br /&gt;
    CDate mDate1 (25, 6, 2008);&lt;br /&gt;
    mDate1.DisplayDate ();&lt;br /&gt;
    CDate mDate2 (23, 5, 2009);&lt;br /&gt;
    mDate2.DisplayDate ();&lt;br /&gt;
    if (mDate2 != mDate1)&lt;br /&gt;
        cout &amp;lt;&amp;lt; &amp;quot;The two dates are not equal... As expected!&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    CDate mDate3 (23, 5, 2009);&lt;br /&gt;
    mDate3.DisplayDate ();&lt;br /&gt;
    if (mDate3 == mDate2)&lt;br /&gt;
        cout &amp;lt;&amp;lt; &amp;quot;mDate3 and mDate2 are evaluated as equals&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    // Get the integer equivalent of mDate3 using operator int()&lt;br /&gt;
    int nIntegerDate3 = mDate3;&lt;br /&gt;
    cout &amp;lt;&amp;lt; nIntegerDate3&amp;lt;&amp;lt; endl;&lt;br /&gt;
    // Use overloaded operator== (for int comparison)&lt;br /&gt;
    if (mDate3 == nIntegerDate3)&lt;br /&gt;
        cout &amp;lt;&amp;lt; &amp;quot;The integer  and mDate3 are equivalent&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
    // Use overloaded operator != that accepts integers&lt;br /&gt;
    if (mDate1 != nIntegerDate3)&lt;br /&gt;
        cout &amp;lt;&amp;lt; &amp;quot;The mDate1 is inequal to mDate3&amp;quot;;&lt;br /&gt;
    return 0;&lt;br /&gt;
 }&lt;br /&gt;
  &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overload the  &amp;lt; and  	&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
&amp;quot; src=&amp;quot;http://www.java2s.com/Code/CppImages/Overloadtheand.PNG&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; &lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
class MyClass {&lt;br /&gt;
  int x, y; &lt;br /&gt;
public:&lt;br /&gt;
  MyClass() { &lt;br /&gt;
     x=0; &lt;br /&gt;
     y=0; &lt;br /&gt;
  }&lt;br /&gt;
  MyClass(int i, int j) { &lt;br /&gt;
     x=i; &lt;br /&gt;
     y=j; &lt;br /&gt;
  }&lt;br /&gt;
  void getXY(int &amp;amp;i, int &amp;amp;j) { &lt;br /&gt;
     i=x; &lt;br /&gt;
     j=y; &lt;br /&gt;
  }&lt;br /&gt;
  int operator&amp;lt;(MyClass object2);&lt;br /&gt;
  int operator&amp;gt;(MyClass object2);&lt;br /&gt;
};&lt;br /&gt;
int MyClass::operator&amp;lt;(MyClass object2)&lt;br /&gt;
{&lt;br /&gt;
  return x&amp;lt;object2.x &amp;amp;&amp;amp; y&amp;lt;object2.y; &lt;br /&gt;
}&lt;br /&gt;
int MyClass::operator&amp;gt;(MyClass object2)&lt;br /&gt;
{&lt;br /&gt;
  return x&amp;gt;object2.x &amp;amp;&amp;amp; y&amp;gt;object2.y;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  MyClass object1(10, 10), object2(5, 3);&lt;br /&gt;
  if(object1&amp;gt;object2) &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;object1 &amp;gt; object2\n&amp;quot;;&lt;br /&gt;
  else &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;object1 &amp;lt;= object2 \n&amp;quot;;&lt;br /&gt;
  if(object1&amp;lt;object2) &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;object1 &amp;lt; object2\n&amp;quot;;&lt;br /&gt;
  else &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;object1 &amp;gt;= object2\n&amp;quot;;&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>