Programar em C++/Herança: diferenças entre revisões

[edição não verificada][edição não verificada]
== Heranças múltiplas ==
 
Podemos ter a situação em que uma classe derivada possa herdar membros de várias classes base. Esta característica é uma distinção entre C++ e outras linguagens orientadas a objeto. Este recurso dá mais poder de modelagem ao programador, mas vale a pena lembrar que ''mais poder'' exige ''mais cautela'' no uso.
 
// An example of multiple base classes.
<source lang="cpp">
// Um exemplo de múltiplas classes base.
#include <iostream>
 
using namespace std;
 
class base1
{
void showx() { cout << x << "\n"; }
};
 
class base2
{
void showy() { cout << y << "\n"; }
};
 
class derived: public base1, public base2 // Inherit multiple base classes.
{
void set(int i, int j) { x = i; y = j; }
};
 
int main()
{
derived ob;
ob.set(10, 20); // providedDisponível bypela classe "derived"
ob.showx(); // fromPela classe base1
ob.showy(); // fromPela classe base2
#ifndef WIN32
system ("pause");
#endif
return 0;
}
</source>
 
repareRepare que utilizamos o operador comma (virgula)vírgula para dizer ao compilador que herdamosa váriasclasse derivada herda mais de uma classe. Com efeito, temos uma lista de classes separadas por vírgulas depois do operador ":" (dois pontos).
 
Quando queremos que a classe derivada herde uma classe como pública e outra como privada ou protegida basta preceder a classe com o seu especificador de acesso. Da mesma forma, a omissão do especificador leva o compilador a usar o padrão que é privado (private).
'''Pergunta''': e quando queremos herdar uma classe como public e outra como private ou protected.
Basta preceder a classe com o seu especificador de acesso
 
== Construtores e destrutores ==