c++ 构造函数的错误处理机制,懂得进来拿分
c++ 构造函数的异常处理机制,懂得进来拿分!C/C++ codestruct T{static void* operator new(size_t, unsign
c++ 构造函数的异常处理机制,懂得进来拿分!
C/C++ codestruct T{ static void* operator new(size_t, unsigned short nTypes, unsigned short nUnitSize) {return NULL;} static void operator delete(void* p, size_t){} T ( int x){}; }; int main(){ T* t= new(1, 2)T(0); return 0;}
编译时会出现问题下列waring,求解决方案
C# code“void *T::operator new(size_t,unsigned short,unsigned short)”: 未找到匹配的删除运算符;如果初始化引发异常,则不会释放内存
顺便问下,c++ 构造函数抛出异常时,如何处理?
[解决办法]使用与你的operator new相匹配的operator delete
比如你可以把delete的参数改为(void* p,unsigned short nTypes, unsigned short nUnitSize)
构造函数应当自行保证异常安全,抛到外面没法处理,内部可以诸如auto_ptr等可析构的智能类型,否则可能会try catch满天飞,另外可以把一些初始化的操作放在init里,至少可以构造出完整对象给析构函数一个运行的机会。
[解决办法]你自己的只有在 抛出异常的时候才会调用到。没事就不要重载这两个函数玩吧。