我有一个关于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)