基于本单元的作业3,修改Screen类,添加析构函数;同时补充deleteInstance()函数,能够删除在createInstance()中创建的Screen对象;完成单例模式练习(10分)
题目内容:
修改本单元作业 3 中的Screen类
- 为Screen类添加析构函数
-
析构函数应首先输出数据成员leave的内容并换行(使用std::endl)
-
然后再执行其他必要的操作(如果有的话)
- 在Screen类中,添加一个deleteInstance()函数
-
函数类型自行根据main()中的代码确定
-
功能:将getInstance()函数中申请的内存归还给操作系统。
-
将数据成员instance设置为空指针nullptr
- 处理Screen类的构造函数
1) 将无参构造函数删除(使用C++11的delete声明方法)
2) 将其它构造函数都变成 private 成员
-
删除Screen类中的所有setter函数
-
保留屏幕宽高的合法性检测
程序的主函数如下
int main() {
int width, height;
Screen *screen1, *screen2;
std::cin >> width >> height;
screen1 = Screen::getInstance(width, height);
screen2 = Screen::getInstance();
if (screen1 != screen2 ) {
std::cout << "two instances" << std::endl;
}
std::cout << screen2->getWidth() << ' ' << screen2->getHeight() << std::endl;
screen2->deleteInstance();
screen1 = Screen::getInstance(2 * width