题目描述:要求定义一类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;
}
输入描述
LiuDeHua
ZhangXueYou
输出描述
LiuDeHua
LiuDeHua
o1与o2指向的是同一个对象!
代码:
#include<iostream>
using namespace std;
class A
{
private:
string name;
A() {}
static A* o;
void SetName(string name)
{
this->name = name;
}
public:
static A* GetObject(string name)
{
if (o == NULL)
{
o = new A();
o->SetName(name);
}
return o;
}
void Print()
{
cout << name << endl;
}
};
A* A::o = NULL;