C++可以继承的方法使用子类成员



正如标题所述,在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
}

最新更新