虚函数最好不要内联

虚函数最好不要内联

现象

在这里插入图片描述

定义在内联函数时会有如下警告:

警告:'Sp_counter’没有行外的虚方法定义;它的虚函数表将在每个翻译单元中发出,意思就是程序编译时候会给每个有虚函数的类生成一个虚函数表然后放在.o里,程序运行后拷贝到内存里。

放在类外之后就正常了
在这里插入图片描述

原因

类的实例化就是给每一个实例在内存中分配一块地址。空类的大小是0,实例化时编译器会给一个字节。

class A {
  public:
    virtual ~A();
};

猜你喜欢

转载自blog.csdn.net/MMTS_yang/article/details/113941009