【发布时间】:2016-06-06 18:17:59
【问题描述】:
#include <iostream>
class Base
{
public:
virtual ~Base() {}
virtual void f()
{
std::cout << "base\n";
}
};
class Derived : public Base
{
public:
virtual ~Derived() {}
virtual void f()
{
std::cout << "derived\n";
}
};
int main()
{
Derived* D = new Derived;
D->f();
delete D;
return 0;
}
所以我打电话给Derived::f,但我也想打电话给Base::f。除了在Derived::f() 中调用Base::f() 之外,还有其他方法吗?
【问题讨论】:
-
@PiotrSkotnicki 但是它不会调用 Derived::f()
-
所以你的设计有缺陷。如果你可以自己做,为什么需要一个同时调用这两个函数的机制?
-
您想总是在拨打
Derived::f时拨打Base::f吗?如果没有,D->Derived::f(); D->Base::f();?如果是这样,只需在Derived::f中调用Base::f。 C++ 不支持 ctors/dtors 之外的自动 ctor/dtor 样式继承。
标签: c++ visual-c++