我正在编写一段简单的代码。
class A
{
public:
virtual func ()
{ // allocate memory
}
};
class B : public A
{
public:
func ()
{ // some piece of code
// but call base class same function Ist
}
}
main()
{
A *ptr = new B;
ptr->func () //here I want to call base class function first
//and then derived class function
// How to implement ??
}
如何先调用基类函数,然后从派生类中调用相同的函数? 我不想明确地调用每个函数,我只是调用派生类函数,并且应该自动调用基类函数。
我不希望任何构造函数调用这些函数。
有没有办法实现这个或者这都是垃圾。
答案 0 :(得分:4)
在func
的实现中调用父类的方法B
(您需要明确地执行此操作):
class B: public A
{
public:
func()
{
A::func();
...
}
}
答案 1 :(得分:1)
您可以明确地致电A::func()
。
class B : public A
{
public:
void func ()
{
A::func(); // call base class func()
// some more code
}
}
答案 2 :(得分:1)
您不能自动安排它;你必须从derived-class override中调用基类函数:
void B::func() {
A::func();
// then do something else
}