正如标题所述,在C++中,继承的方法可以使用子类成员吗?
例如,假设我们将一个实体定义为具有属性(体积(和返回该属性的方法。然后在子类中,比如说一个盒子,我们有相同的属性。继承的方法会返回父类的属性还是子类的属性?
作为扩展,继承的方法是否可以使用父类中定义的方法的子类特定(重写(实现?或者最好的解决方案是传入函数指针?
编辑:
对于问题的扩展部分,请考虑以下示例:
class A{
public:
void foo(){
foo2();
}
void foo2(){
// implementation here
}
}
class B:A{
public:
void foo2(){
// child implementation here
}
}
int main(){
B b;
A a;
b.foo(); // I want foo to use b's implementation of foo2
}
它可以使用CRTP模式来实现,该模式使用模板。
template<class Derived>
class A {
public:
void foo() {
static_cast<Derived*>(this)->foo2();
}
};
class B :public A<B> {
public:
void foo2() {
// child implementation here
}
};
int main() {
B b;
b.foo(); // Uses foo to use b's implementation of foo2
}