仮想デストラクタを使用して基本クラスを作成するのに、なぜそれほど多くのコードが必要なのかを理解しようとしています。ROM容量の少ないMCUでプロジェクトを書く準備をしているので、とても気になります。
#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 プログラムを作成することは可能ですか?