Singletone 析构函数调不到】的更多相关文章

<设计模式>定义一个单例类,使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例. 关键字:指向自己的静态指针私有,创建对象并赋值私有静态指针函数->公有, 构造函数私有--只有自己能创建 static pthread_mutex_t _instance_lock; class one_File {     public:     static one_File* getInstance()     {         if(NULL == one_file_ins…
我们知道当调用默认拷贝构造函数时,一个对象对另一个对象初始化时,这时的赋值时逐成员赋值.这就是浅拷贝,当成员变量有指针时,浅拷贝就会在析构函数那里出现问题.例如下面的例子: //test.h #ifndef MYSTRING_H #define MYSTRING_H class MyString { char* m_str; public: MyString(char* str=""); ~MyString(); void Display(); }; #endif //MYSTRING…
这是<opencv2.4.9tutorial.pdf>的highgui的三个例子.通过简短的介绍来实现不同函数的理解,省去一些不需要说的东西. 一.增加滑动条 这是opencv中为数不多的可以用来交互的东西,其实因为opencv的定位不是界面性编程,所以也没打算提供多好的交互性.可以在"highgui.h"文件中查找提供了的GUI用法,滑动条主要是用来处理鼠标事件的.对于滚动条来说,需要先创建个回调函数用来用户自定义当激发滑动条事件的时候该做什么样的操作. int crea…
大家请看下面的代码,请问 输出结果是?? /** * @file vector-destroy.cc * @brief an interesting problem regarding vector * @author shoulinjun@126.com * @version 0.1.00 * @date 2014-03-16 */ #include <iostream> #include <vector> using namespace std; class MyClass {…
CArchive 对象提供了一个类型安全缓冲机制CArchive 对象提供了一个类型安全缓冲机制.用于将可序列化对象写入CFile 对象或从中读取可序列化对象.通常,CFile 对象表示磁盘文件:但是,它也可以是表示“剪贴板”的内存文件(CSharedFile 对象). CArchive允许以一个永久二进制(通常为磁盘存储)的形式保存一个对象的复杂网络,它可以在对象被删除时,还能永久保存.可以从永久存储中装载对象,在内存中重新构造它们.使得数据永久保留的过程就叫作“串行化”. CArchive支…
#include <iostream> #include <string> #include <assert.h> using namespace std; //声明字符串拷贝函数 char* mystrcpy(char* str1,const char* str2); class CPerson { char* m_pName; public: CPerson(char* pName) { cout<<"普通构造函数"<<e…
正如标题所示:这篇复习带有指针类型成员的class 设计类 考虑到会有以下操作,来设计类 { String s1(); String s2("hello"); String s3(s1); cout << s3 << endl; s3 = s2; cout << s3 << endl; } 函数体内第二行和第三行都是构造函数,一个含参数,一个不含参数.第四行创建一个以s1为初值的对象s3,是一个拷贝的动作,需要一个拷贝构造函数,之后会讲到…
from:http://blog.csdn.net/fisher_jiang/article/details/2477577 一. 虚析构函数 我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数.因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数. 如: class Base{public:   Base(){}   virtual ~Base(){}};class Derived: public Base{public:   D…
错误信息截图: 原因: 1.内存泄漏:所以当程序退出时,系统会收回分配的内存,于是调析构函数,由于内存已被错误地释放,于是就会出现"Debug Assertion Failed"的错误. 2.这个assert说明什么问题呢? 说明有一块内存在被释放的时候,它的头部里面的信息已经被改掉了,和预期的不一样.内存分配的程序往往在被分配出的内存块头部放上一些校验信息.这个信息内存的用户是不知道也不应该修改的.这样,在内存被释放的时候,内存分配程序就可以验对这个头部信息是否被改过了.若被改过,就…
这章非常容易理解:因为C++并不禁止析构函数吐出异常,只是不鼓励这样做而已. 一.原因 假设我们有10个装着鸡蛋的容器,而且现在我们还想着把它在析构函数打烂. class Egg { public : ... ~Egg() { // 这里可能出错,导致蛋打不烂 } }; void foo() { vector<Egg> v // 假设v中间有10个Egg .... } // v在这里被自动销毁 如果我们在销毁10个鸡蛋的过程中,在析构第一个鸡蛋的时候,有个异常被抛出,按照销毁机制,后续的9个鸡…