C++运算符重载实验报告

需积分: 22 1 下载量 108 浏览量 更新于2024-09-04 收藏 86KB DOCX 举报
C++实验四.docx 本实验报告主要涉及C++语言中的运算符重载、复数运算、字符串类设计、秒表设计等知识点。 1. 复数相加和运算符重载 在本实验中,我们首先定义了一个复数类complex,包含实部和虚部两个私有成员变量。然后,我们通过函数来实现复数相加,并通过运算符重载重载“+”号,实现复数的加法运算。在这里,我们可以将运算符重载作为成员函数或非成员函数来实现,两种方式的实现方法都可以达到相同的效果。 在成员函数实现中,我们可以使用以下代码来实现复数的加法运算: ```cpp complex operator+(complex& c2) { complex c; c.real = real + c2.real; c.imag = imag + c2.imag; return c; } ``` 在非成员函数实现中,我们可以使用以下代码来实现复数的加法运算: ```cpp complex operator+(complex& c1, complex& c2) { complex c; c.real = c1.real + c2.real; c.imag = c1.imag + c2.imag; return c; } ``` 2. 字符串类设计 在本实验中,我们还设计了一个字符串类String,用于存放不定长的字符串。在这个类中,我们重载了“==”、“<”、“>”等运算符,用于比较字符串的大小和相等性。 例如,我们可以使用以下代码来实现字符串的比较运算: ```cpp bool operator==(const String& s1, const String& s2) { if (s1.length != s2.length) { return false; } for (int i = 0; i < s1.length; i++) { if (s1.data[i] != s2.data[i]) { return false; } } return true; } ``` 3. 秒表设计 在本实验中,我们还设计了一个秒表类Time,用于表示时间。在这个类中,我们定义了小时、分、秒三个成员变量,并重载了“++”运算符,用于实现秒表的递增运算。 例如,我们可以使用以下代码来实现秒表的递增运算: ```cpp Time& operator++() { sec++; if (sec >= 60) { sec = 0; min++; if (min >= 60) { min = 0; hour++; } } return *this; } ``` 4. 流插入运算符重载 在本实验中,我们还学习了如何重载流插入运算符“<<”,用于实现复数的输出。在这里,我们可以使用以下代码来实现复数的输出: ```cpp ostream& operator<<(ostream& os, const complex& c) { os << c.real << " + " << c.imag << "i"; return os; } ``` 本实验报告涵盖了C++语言中的运算符重载、复数运算、字符串类设计、秒表设计、流插入运算符重载等多个知识点,旨在帮助读者更好地理解和应用C++语言。