通过 lambda 实现纯虚函数

Ale*_*iou 4 c++ lambda abstract-class

我可以使用 lambda 实现纯虚函数,类似于 Java 接口实现吗?

Gui*_*cot 5

不直接。不过,您可以通过一些间接方式。

struct interface {
    virtual auto execute() -> int = 0;
};

template<typename T>
struct lambda_impl : interface, private T {
    lambda_impl(T l) noexcept : T{l} {}

    auto execute() -> int override {
        return T::operator()();
    }
};
Run Code Online (Sandbox Code Playgroud)

你现在可以构造一个lambda_impl像这样的:

auto instance = lambda_impl{
    []{ return 42; }
};

instance.execute();
Run Code Online (Sandbox Code Playgroud)