可以使用动态绑定来实现多态性而不是指针吗?
进行了动态绑定
通常,在C ++中,我们使用虚拟类别和指针来实现多态性,但是最近我意外地用STD ::功能示例
class base {
using func_t = std::function<void()>;
private:
func_t func_;
public:
void foo() {
func_();
}
void set(func_t func) {
func_ = std::move(func);
}
};
class derived : public base{
public:
// something_else
};
void caller(base& b) {
b.foo();
}
void test() {
derived d;
d.set([]() {
printf("test\n");
});
caller(d);
}
:此代码可以工作,但是它安全吗?还是仅依靠实现?
generally in c++ we use virtual class and pointers to achieve polymorphism, but recently I accidently made it with dynamic binding with std::function
sample:
class base {
using func_t = std::function<void()>;
private:
func_t func_;
public:
void foo() {
func_();
}
void set(func_t func) {
func_ = std::move(func);
}
};
class derived : public base{
public:
// something_else
};
void caller(base& b) {
b.foo();
}
void test() {
derived d;
d.set([]() {
printf("test\n");
});
caller(d);
}
this code would work, but is it safe? or just rely on the implementation?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论