我试图理解为什么需要这么多代码来创建一个带有虚拟析构函数的基类。我正准备在 MCU 上编写一个具有小 ROM 空间的项目,所以这让我很困扰。
#include "stm32g0xx.h"
#include "stm32g0xx_nucleo.h"
class test
{
uint32_t data;
public:
test(): data(0)
{
}
~test()
{
}
uint32_t getData() const
{
return data;
}
void setData(uint32_t d)
{
data = d;
}
};
int main(void)
{
test t;
for(;;);
}
text data bss dec hex filename
936 1096 1096 3128 c38 Destructors.elf
#include "stm32g0xx.h"
#include "stm32g0xx_nucleo.h"
class test
{
uint32_t data;
public:
test(): data(0)
{
}
virtual ~test()
{
}
uint32_t getData() const
{
return data;
}
void setData(uint32_t d)
{
data = d;
}
};
int main(void)
{
test t;
for(;;);
}
text data bss dec hex filename
3256 2144 1160 6560 19a0 Destructors.elf
创建虚拟析构函数需要 2k 的 .text 和 1k 的 .data 内存……为什么?是否可以避免虚拟析构函数并仍然编写安全的 OOP 程序?