首先将我的几个问题提出来吧,如下:
(1). 编译器是否一定会为你生成析构函数?
(2).如果按照下面百度的说法,编译器不管你自己是否编写析构函数,它都会给你生成一个析构函数,但是什么也不做,那我就好奇了,什么都不做那生成出来干嘛?这是吃饱了撑了?还是有其他目的?
(3).今天我看深入探索c++对象模型的时候,书上是这么说的:如果用户没有定义析构函数,而且你类中的数据成员也没有定义析构函数,那么编译器是不会给你生成析构函数的,这和百度的解释不就出现矛盾了?这时候我该相信谁?问题是我没有办法去测试到底我该信谁(我只是想更好的了解c++的性质,是不是有点太多虑了?请不要见怪)
(4)今天我测试了一下下面这样一个案例
class Base
{
};
class Derived
{
public:
~Derived(){}
};
for(int i = 0; i != 10000000; ++i)
{
Base base;//或者 Derived derived;
}
然后我分别创建这两个对象10000000次,对比时间发现后者是前者的10倍左右,面对这个问题,我想知道的是这样一个简单的析构到底做了什么?
(5). 那么除了继承的需要和动态内存分配时候的delete的需要,那么是否一般的类型就没必要写析构了?毕竟我只是简单加了一个析构函数而已,而且我类中还没有数据成员,他就有这么大的性能区别,那么如何能很好的写好一个类?后来我又测试了一下,我在类中添加两个double类型的数据成员之后,发现这倍数又涨到将近30倍,所以自己发现想写好一个类都不是那么简单啊!
还请各位大神能给我指点,我只想把知识学的透点,掌握本质才好!
