mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Documentation about unique base functions.
This commit is contained in:
parent
4c7f9f9751
commit
6d2f1f3068
@ -237,8 +237,10 @@ bases, it has to explicitly override it:
|
|||||||
function foo() public override(Base1, Base2) {}
|
function foo() public override(Base1, Base2) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
A function defined in a common base contract does not have to be explicitly
|
An explicit override specifier is not required if
|
||||||
overridden when used with multiple inheritance:
|
the function is defined in a common base contract
|
||||||
|
or if there is a unique function in a common base contract
|
||||||
|
that already overrides all other functions.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
@ -250,6 +252,19 @@ overridden when used with multiple inheritance:
|
|||||||
// No explicit override required
|
// No explicit override required
|
||||||
contract D is B, C {}
|
contract D is B, C {}
|
||||||
|
|
||||||
|
More formally, it is not required to override a function (directly or
|
||||||
|
indirectly) inherited from multiple bases if there is a base contract
|
||||||
|
that is part of all override paths for the signature, and (1) that
|
||||||
|
base implements the function and no paths from the current contract
|
||||||
|
to the base mentions a function with that signature or (2) that base
|
||||||
|
does not implement the function and there is at most one mention of
|
||||||
|
the function in all paths from the current contract to that base.
|
||||||
|
|
||||||
|
In this sense, an override path for a signature is a path through
|
||||||
|
the inheritance graph that starts at the contract under consideration
|
||||||
|
and ends at a contract mentioning a function with that signature
|
||||||
|
that does not override.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
Functions with the ``private`` visibility cannot be ``virtual``.
|
Functions with the ``private`` visibility cannot be ``virtual``.
|
||||||
|
Loading…
Reference in New Issue
Block a user