How to call a parent class function from derived class function?
How do I call the parent function from a derived class using C++? For example, I have a class called parent
, and a class called child
which is derived from parent. Within each class there is a print
function. In the definition of the child's print function I would like to make a call to the parents print function. How would I go about doing this?
I'll take the risk of stating the obvious: You call the function, if it's defined in the base class it's automatically available in the derived class (unless it's private
).
If there is a function with the same signature in the derived class you can disambiguate it by adding the base class's name followed by two colons base_class::foo(...)
. You should note that unlike Java and C#, C++ does not have a keyword for "the base class" ( super
or base
) since C++ supports multiple inheritance which may lead to ambiguity.
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'
}
};
Incidentally, you can't derive directly from the same class twice since there will be no way to refer to one of the base classes over the other.
class bottom : public left, public left { // Illegal
};
Given parent class named Parent
and child class named Child
,
You can do something like this:
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/9830.html
上一篇: “编程接口”意味着什么?
下一篇: 如何从派生类函数调用父类函数?