什么是非平凡
class Test
{
int* p;
}
这时析构函数就不能是trivial的,因为它必须把p申请的内存释放掉!
而如果class Test
{
int p;
}
析构函数可以什么也不做,就是trivial的。
nontrivial需要你自己负责处理的一些问题,诸如内存的释放。因为编译器产生的析构函数
只是满足编译器的需要,而不是程序的需要。所以对于程序所需要的功能,需要你自己来处理。
那么NonTrivial就是需要处理程序员自己惹得麻烦事的析构函数咯?
我估计你是看C++沉思录中看到的。
nontrivial 也就是非无效的,我认为是如果你改写了这个析构函数,那么这个析构函数就是nontrivial,也就是需要基类的相应函数为virtual
JJHou的《STL源码剖析》也讲到了这个问题,而且解释的比较清楚。