单例模式

一只青木呀 2019-11-08 11:32:08
学历路上的 自己觉得难点(单例模式) //单例模式 保证类的对象只有一个 #include<iostream> using namespace std; class A { public: static A* getmya()//把指向对象的指针返回出去 { return mya; } int b = 1000; //class smartA //{ //public: // ~smartA() // { // if (A::mya) // { // cout << "释放了单例的对象" << endl;; // delete A::mya; // A::mya = NULL; // system("pause"); // } // } // static smartA smartMya; //}; private: A() {} //构造函数私有化 static A *mya; int a = 100; }; A* A::mya = new A;//实例化对象 //A::smartA smartMya; int main() { A *mya1 = A::getmya(); //接收对象 cout << mya1->b << endl; delete A::getmya(); system("pause"); return 0; } 轻点 一到指针就晕,求解
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
一只青木呀 2019-11-09
  • 打赏
  • 举报
回复
引用 3 楼 Italink的回复:
我给你讲讲为什么单例模式中要用指针,因为创建一个类的实例需要调用构造函数,如果你类的内部有自己的实例,那么就会出现(从前有座山,山里有个庙,庙里有个老和尚在讲故事,讲的是从前有座山...)的情况,对,就是不断的嵌套调用构造,直至程序崩溃,而指针在创建的时候不会调用构造函数,因为它只是用来存储地址的,因此单例模式中必须用指针存储唯一实例的地址 另外,指针的话,当做一种类型来记,比如int*** a; 除了最后一个*,前面的是指针存储的地址类型,这句代码的是创建了一个存储int**地址的指针a 看看这个你看有没有帮助 https://blog.csdn.net/qq_40946921/article/details/90047918
#include<iostream> using namespace std; class A { public: static A getmya()//把对象返回出去 { return mya; } int b = 1000; private: A() {} //构造函数私有化 static A mya; int a = 100; }; //A A::mya = new A;//实例化对象 A A::mya; int main() { A mya1 = A::getmya(); cout << mya1.b << endl; system("pause"); return 0; } 这样子会不会出现您说的那种情况呀?
Italink 2019-11-09
  • 打赏
  • 举报
回复
居然没问题诶
Italink 2019-11-08
  • 打赏
  • 举报
回复
我给你讲讲为什么单例模式中要用指针,因为创建一个类的实例需要调用构造函数,如果你类的内部有自己的实例,那么就会出现(从前有座山,山里有个庙,庙里有个老和尚在讲故事,讲的是从前有座山...)的情况,对,就是不断的嵌套调用构造,直至程序崩溃,而指针在创建的时候不会调用构造函数,因为它只是用来存储地址的,因此单例模式中必须用指针存储唯一实例的地址 另外,指针的话,当做一种类型来记,比如int*** a; 除了最后一个*,前面的是指针存储的地址类型,这句代码的是创建了一个存储int**地址的指针a 看看这个你看有没有帮助 https://blog.csdn.net/qq_40946921/article/details/90047918
一只青木呀 2019-11-08
  • 打赏
  • 举报
回复
引用 1 楼 Italink的回复:
哪裏有什麽不懂還是代碼有問題哦?
就是难得理解指针
Italink 2019-11-08
  • 打赏
  • 举报
回复
哪裏有什麽不懂還是代碼有問題哦?
一只青木呀 2019-11-08
  • 打赏
  • 举报
回复
引用 3 楼 Italink的回复:
我给你讲讲为什么单例模式中要用指针,因为创建一个类的实例需要调用构造函数,如果你类的内部有自己的实例,那么就会出现(从前有座山,山里有个庙,庙里有个老和尚在讲故事,讲的是从前有座山...)的情况,对,就是不断的嵌套调用构造,直至程序崩溃,而指针在创建的时候不会调用构造函数,因为它只是用来存储地址的,因此单例模式中必须用指针存储唯一实例的地址 另外,指针的话,当做一种类型来记,比如int*** a; 除了最后一个*,前面的是指针存储的地址类型,这句代码的是创建了一个存储int**地址的指针a 看看这个你看有没有帮助 https://blog.csdn.net/qq_40946921/article/details/90047918
哇,非常感谢,谢谢谢谢

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧