我有一个非虚拟接口(NVI)的父类:
class Parent {
private:
virtual int do_function(void) = 0;
public:
int function(void);
virtual ~Parent() {};
}
和一个子类(实际上,我有很多子类,但我希望只有一个这样工作)
class Child : public Parent {
private:
int _x;
int do_function(void) { return _x; };
public:
Child(int x): Parent(), _x(x) {}
virtual ~Child() {return do_function();};
}
我想调用一个函数:
int myFunction(Parent& x) {
return x.function();
}
使用代码
int x = 5;
myFunction(x);
但不是
int myFunction(const Child& x) {
return x.function();
}
效果很好。是否可以通过类型的隐式转换来做到这一点?