我需要为 shared_ptr 做自定义删除器。我知道这可以通过类似的方式完成:
std::shared_ptr<SDL_Surface>(Surf_return_f(), MyDeleter);
Run Code Online (Sandbox Code Playgroud)
但我想按照我的 unique_ptr 自定义删除器的风格制作它们:
struct SDL_Surface_Deleter {
void operator()(SDL_Surface* surface) {
SDL_FreeSurface(surface);
}
};
using SDL_Surface_ptr = std::unique_ptr<SDL_Surface, SDL_Surface_Deleter>;
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
class A{
virtual void setEnable(bool enable) = 0;
};
class B : A{
B() {
setEnable(true);
}
~B() {
setEnable(false);
}
bool enable_ = false;
void setEnable(bool enable) override {
enable_ = enable;
}
};
Run Code Online (Sandbox Code Playgroud)
我是否正确理解 B :: setEnable 函数仅在构造函数退出后才会添加到 vtable 并且这是未定义的行为?