如何使用c++重写string::append() map list函数?
时间: 2024-03-09 18:45:19 浏览: 61
C++重写String类
重写string::append()、map和list函数需要分别进行操作,下面我将分别介绍:
1. 重写string::append()
要重写string::append()函数,可以使用继承的方法,并重新定义该函数,如下所示:
```c++
#include <iostream>
#include <string>
using namespace std;
class MyString : public string {
public:
MyString() : string() {}
MyString(const char* str) : string(str) {}
MyString(const string& str) : string(str) {}
MyString& append(const MyString& str) {
string::append(str);
cout << "Custom append method called" << endl;
return *this;
}
};
int main() {
MyString s1("Hello");
MyString s2(" world");
s1.append(s2);
cout << s1 << endl;
return 0;
}
```
2. 重写map函数
要重写map函数,可以使用模板类继承的方法,如下所示:
```c++
#include <iostream>
#include <map>
using namespace std;
template<typename Key, typename Value>
class MyMap : public map<Key, Value> {
public:
void insert(const pair<Key, Value>& p) {
map<Key, Value>::insert(p);
cout << "Custom insert method called" << endl;
}
};
int main() {
MyMap<int, string> myMap;
myMap.insert(make_pair(1, "Hello"));
myMap.insert(make_pair(2, "world"));
for (auto itr = myMap.begin(); itr != myMap.end(); itr++) {
cout << itr->first << " " << itr->second << endl;
}
return 0;
}
```
在MyMap类中重写了map类的insert方法,并在其中添加了一些自定义的操作,这里只是简单地输出一句话。在main函数中创建了一个MyMap对象,分别调用了insert方法,并输出了结果。
3. 重写list函数
要重写list函数,可以使用继承的方法,并重新定义该函数,如下所示:
```c++
#include <iostream>
#include <list>
using namespace std;
template<typename T>
class MyList : public list<T> {
public:
void push_back(const T& val) {
list<T>::push_back(val);
cout << "Custom push_back method called" << endl;
}
};
int main() {
MyList<int> myList;
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
for (auto itr = myList.begin(); itr != myList.end(); itr++) {
cout << *itr << " ";
}
return 0;
}
```
在MyList类中重写了list类的push_back方法,并在其中添加了一些自定义的操作,这里只是简单地输出一句话。在main函数中创建了一个MyList对象,分别调用了push_back方法,并输出了结果。
需要注意的是,在重写这些函数时,需要使用父类的函数来进行实际的操作。
阅读全文