Das funktioniert um dem Compiler mitteilen zu können welche Funktion der Programmierer aufgerufen haben will, siehe hierzu ein Beispiel:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
class Base
{
public:
void foobar() const
{
std::cout << "Base::foobar() const" << std::endl;
}
};
class Derived
: private Base
{
public:
void foobar() const
{
std::cout << "Foobar forward aus Derived" << std::endl;
Base::foobar();
}
};
|
Wenn man jetzt eine Instanz von Derived erzeugt und für diese foobar aufruft so wird man an die korrekte Funktion, nämlich Base::foobar(), weitergeleitet.
|
C-/C++-Quelltext
|
1
2
3
4
5
|
int main()
{
Derived foo;
foo.foobar();
}
|
Hätte man nicht die Möglichkeit den Klassennamen vor die Funktion zu setzen, so könnte der Compiler nicht entscheiden welche Funktion aufgerufen werden sollte, bzw er würde einer eine höhere Priorität gegeben, nämlich der falschen.
Der vorangestellte Klassenname ermöglicht also eine Unterscheidung von überdeckten Funktionen.
In deinem Fall ist das aber egal.
grüße