要求定义一类A,其有私有成员name(string类型)及其他成员。请完成类A的定义,使得类A只能被实例化为唯一的一个对象。本题已经完成main函数编写如下,请提交其他相应代码(头文件引用部分,命名空间引用部分,类定义部分): int main() { string name1,name2; cin >> name1; cin >> name2; A* o1 = A::GetObject(name1); o1->Print(); A* o2 = A::GetObject(name2); o2->Print(); if (o1 == o2) { cout << "o1与o2指向的是同一个对象!" << endl; } delete o1; return 0; }
时间: 2024-03-12 21:48:04 浏览: 21
头文件引用部分:
```c++
#include <iostream>
#include <string>
#include <map>
```
命名空间引用部分:
```c++
using namespace std;
```
类定义部分:
```c++
class A {
private:
string name;
static A* obj;
A(string n) : name(n) {}
public:
static A* GetObject(string n) {
if (obj == nullptr) {
obj = new A(n);
}
return obj;
}
void Print() {
cout << "Name: " << name << endl;
}
static void Release() {
if (obj != nullptr) {
delete obj;
obj = nullptr;
}
}
};
A* A::obj = nullptr;
```
注:题目要求只能被实例化为唯一的一个对象,因此可以使用单例模式,通过将构造函数私有化并声明一个静态的指向该类唯一实例的指针变量来实现。同时,使用一个静态的 GetObject 函数来获取该唯一实例,如果该实例不存在则创建,否则直接返回该实例。同时,实现一个 Release 函数释放该唯一实例。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)