现有一个类MyString,其内部包含了字符串成员,请根据main函数代码完成其他部分代码的编写,main函数代码如下: int main() { MyString* str1 = new MyString("one"); MyString* str2 = new MyString("two"); MyString* str3 = new MyString("three"); cout << "目前对象个数为:" << MyString::GetN() << endl; cout << "我是对象:" << MyString::GetString(str1) << endl; delete str1; cout << "目前对象个数为:" << MyString::GetN() << endl; cout << "我是对象:" << MyString::GetString(str2) << endl; delete str2; cout << "目前对象个数为:" << MyString::GetN() << endl; cout << "我是对象:" << MyString::GetString(str3) << endl; delete str3; cout << "目前对象个数为:" << MyString::GetN() << endl; return 0; }这个代码怎么写?
时间: 2023-08-20 16:18:57 浏览: 69
编写一个MyString类
4星 · 用户满意度95%
可以按照以下的方式来实现:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class MyString {
private:
static vector<MyString *> stringList; // 静态成员变量,用于存储创建的对象指针
string str; // 成员变量,表示字符串
public:
MyString(string s) : str(s) { // 构造函数,将创建的对象指针存储到静态成员变量中
stringList.push_back(this);
}
~MyString() { // 析构函数,将删除的对象指针从静态成员变量中移除
for (auto it = stringList.begin(); it != stringList.end(); ++it) {
if (*it == this) {
stringList.erase(it);
break;
}
}
}
static int GetN() { // 静态成员函数,返回当前已创建对象的个数
return stringList.size();
}
static string GetString(MyString *ms) { // 静态成员函数,返回指定对象的字符串
return ms->str;
}
};
vector<MyString *> MyString::stringList{}; // 静态成员变量初始化
int main() {
MyString* str1 = new MyString("one");
MyString* str2 = new MyString("two");
MyString* str3 = new MyString("three");
cout << "目前对象个数为:" << MyString::GetN() << endl;
cout << "我是对象:" << MyString::GetString(str1) << endl;
delete str1;
cout << "目前对象个数为:" << MyString::GetN() << endl;
cout << "我是对象:" << MyString::GetString(str2) << endl;
delete str2;
cout << "目前对象个数为:" << MyString::GetN() << endl;
cout << "我是对象:" << MyString::GetString(str3) << endl;
delete str3;
cout << "目前对象个数为:" << MyString::GetN() << endl;
return 0;
}
```
输出结果为:
```
目前对象个数为:3
我是对象:one
目前对象个数为:2
我是对象:two
目前对象个数为:1
我是对象:three
目前对象个数为:0
```
阅读全文