如何从派生类函数调用父类函数?
我如何使用C ++从派生类调用父函数? 例如,我有一个名为parent
的类和一个从父类派生的称为child
的类。 每班有一个print
功能。 在定义孩子的打印功能时,我想打电话给家长打印功能。 我会如何去做这件事?
我将冒风险说明明显的情况:如果在基类中定义了该函数,它就会在派生类中自动提供(除非它是private
),则调用该函数。
如果在派生类中有一个具有相同签名的函数,则可以通过添加基类名称和两个冒号base_class::foo(...)
来消除歧义。 你应该注意到,不像Java和C#,C ++ 不具备“基础类”(关键字super
或base
),因为C ++支持多重继承,这可能导致歧义。
class left {
public:
void foo();
};
class right {
public:
void foo();
};
class bottom : public left, public right {
public:
void foo()
{
//base::foo();// ambiguous
left::foo();
right::foo();
// and when foo() is not called for 'this':
bottom b;
b.left::foo(); // calls b.foo() from 'left'
b.right::foo(); // call b.foo() from 'right'
}
};
顺便说一句,你不能直接从同一个类派生两次,因为没有办法在另一个基类之间引用其中一个基类。
class bottom : public left, public left { // Illegal
};
给定名为Parent
父类和名为Child
子类,
你可以做这样的事情:
void Child::print(int x) {
Parent::print(x);
}
如果你的基类叫做Base
,并且你的函数叫做FooBar()
你可以直接使用Base::FooBar()
来调用它。
void Base::FooBar()
{
printf("in Basen");
}
void ChildOfBase::FooBar()
{
Base::FooBar();
}
链接地址: http://www.djcxy.com/p/9829.html
上一篇: How to call a parent class function from derived class function?