小编Ahm*_*AEK的帖子

实现接口的 CRTP 类的 sizeof

我有一个关于sizeof使用 CRTP 实现接口的类实例的问题,如下例所示。

#include <iostream>
class Interface
{
public:
    virtual int foo() {
        std::cout << "Interface\n";
        return 0;
        };
};

template <class Derived>
class Base : Interface
{
public:
    virtual int foo() override {
        Interface::foo();
        std::cout << "base\n";
        return static_cast<Derived*>(this)->bar2;
        }
    int bar;
};

class Derived : public Base<Derived>
{
public:
    virtual int foo() override {
            std::cout << "Derived\n";
        Base<Derived>::foo();
        return bar;
    }
    int bar2;
};

int main()
{
    std::cout << sizeof(Base<Derived>) << '\n';
    std::cout << sizeof(Derived) << …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism class vtable object-layout

1
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×1

class ×1

object-layout ×1

polymorphism ×1

vtable ×1