0

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

4

0 に答える 0