自定义类mystring实现运算符=重载实验报告
时间: 2023-10-09 18:10:07 浏览: 90
运算符重载实例
5星 · 资源好评率100%
实验目的:
1.掌握运算符=的重载方法
2.了解自定义类的属性和行为
实验材料:
C++编译器
实验原理:
运算符重载是指在C++中可以对已有的运算符进行重新定义,赋予其新的含义和功能,使其能够适用于用户自定义的数据类型。
运算符=是赋值运算符,用于将一个对象的值赋给另一个对象。当我们定义一个自定义类时,需要考虑如何重载运算符=,以便能够对自定义类对象执行赋值操作。
自定义类mystring是一个字符串类,具有字符串长度、字符串内容和字符串操作等属性和行为。在本次实验中,我们将演示如何重载运算符=,使得mystring类对象之间可以进行赋值操作。
实验步骤:
1.定义mystring类,包括字符串长度、字符串内容和字符串操作等属性和行为。
2.在mystring类中重载运算符=,使得mystring类对象之间可以进行赋值操作。
3.编写测试程序,测试mystring类对象之间的赋值操作是否正常。
实验结果:
定义mystring类如下:
```c++
class mystring {
private:
int length;
char* str;
public:
mystring() {
length = 0;
str = NULL;
}
mystring(const char* s) {
length = strlen(s);
str = new char[length + 1];
strcpy(str, s);
}
mystring(const mystring& s) {
length = s.length;
str = new char[length + 1];
strcpy(str, s.str);
}
~mystring() {
if (str != NULL) {
delete[] str;
}
}
mystring& operator=(const mystring& s) {
if (this != &s) {
if (str != NULL) {
delete[] str;
}
length = s.length;
str = new char[length + 1];
strcpy(str, s.str);
}
return *this;
}
int size() const {
return length;
}
const char* c_str() const {
return str;
}
};
```
在mystring类中重载运算符=,如下:
```c++
mystring& operator=(const mystring& s) {
if (this != &s) {
if (str != NULL) {
delete[] str;
}
length = s.length;
str = new char[length + 1];
strcpy(str, s.str);
}
return *this;
}
```
编写测试程序,如下:
```c++
int main() {
mystring s1("hello");
mystring s2("world");
s2 = s1;
cout << s2.c_str() << endl;
return 0;
}
```
测试结果如下:
```
hello
```
实验结论:
通过重载运算符=,使得mystring类对象之间可以进行赋值操作,并且赋值操作能够正常执行。
阅读全文