0

我试图理解为什么需要这么多代码来创建一个带有虚拟析构函数的基类。我正准备在 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 程序?

4

0 回答 0