Dude78
Dude78

Reputation: 1

Polymorphysm Derived and Base class with :: Operator

The following programm creates a simple base class(Animal) and some derived classes(Frog,Cat). The question occurs when typing Cat:: or Animal:: (See Code and you'llunderstand the question better)

#include <iostream>
using namespace std;

class Animal
{
    protected:
        int ID=4;
    public:
        void getID();

};

void Animal::getID()
{
    cout << Animal::ID << endl;
}

class Frog:public Animal
{
    public:
        Frog();
};

Frog::Frog()
{
    Animal::ID = 1;
}



class Cat:public Animal
{
    public:
        Cat();
};

Cat::Cat()
{
    Cat::ID = 500;
}

int main()
{
    Frog frog;
    Cat cat;
    cat.getID();
    frog.getID();
}

/*
500
1
is printed to the screen
Question:
in line 26 whether I type Animal::ID=1;or Frog::ID=1;
I get the same result.
So in the derived class Frog,   Animal:: and Frog:: are the same thing??
When I type Animal::  the programm understands Frog:: ??
(Same goes with Cat obviously)
*/

PS: Is there a way to cout the base(Animal) Class ID from a derived class(ex. Frog)?? (ex. frog.getID().SomeOtherFunction and the ID 4(Of the animal class is printed))

Upvotes: 0

Views: 30

Answers (0)

Related Questions