Наследование классов

olimp72

New member
01.09.2011
1
0
#1
Здравствуйте.
Помогите пожалуйста решить проблему по наследованию классов.

Есть базовый класс
class parent
{
protected:
int x;
public:
void Fill() { x = 5; }
void Show() { cout<<x<<endl;}
};
Класс-потомок
class child : public parent
{
public:
void Show_ () { cout<<x<<endl;}
};

parent parent1;
child child1;
int main()
{
parent1.Fill();
parent1. Show(); // Выводит 5
child1. Show_(); // Выводит 0. Почему так?
return 0;
}
Спасибо.
 
V

vol4ek88

#2
Наследование в C++:
class A{ //базовый класс
};

class B : public A{ //public наследование
}

class C : protected A{ //protected наследование
}

class Z : private A{ //private наследование
}

В C++ существует три типа наследования: public, protected, private. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:



Если класс объявлен как базовый для другого класса со спецификатором доступа public, тогда public члены базового класса доступны как public члены производного класса, protected члены базового класса доступны как protected члены производного класса.

Если класс объявлен как базовый для другого класса со спецификатором доступа protected, тогда public и protected члены базового класса доступны как protected члены производного класса.

Если класс объявлен как базовый для другого класса со спецификатором доступа private, тогда public и protected члены базового класса доступны как private члены производного класса.
 
V

vol4ek88

#3
пример наследования

#include <stdio.h>
#include <string.h>

class A
{
public:
void f1 ()
{ printf("class A, f1");

};
};

class B:A
{
public:
int a;
B () { printf ("Constructor!\n");
a = 10;
};


void f1 ()
{
printf("class B, f1, %d", a);
};
};

void main(int argc, char * argv[])
{
A a;
B b;
B* b1;
b1=&b;
b1->f1();
a.f1();
}