URGENTE!!!
Publicado por Carlos (2 intervenciones) el 06/07/2007 18:26:09
necesito ayuda en lo q son funciones AMIGAS y funciones VIRTUALES ,(EJEMPLOS),en el borland builder C++.
Valora esta pregunta


0
#include <iostream>
#include <string>
using namespace std;
class Base;
// Declaración anticipada de la clase Amiga
class Amiga;
// Definición de la clase Base
class Base {
private:
int datoPrivado;
public:
Base(int dato) : datoPrivado(dato) {}
// Declaración de función amiga para permitir acceso a datos privados
friend void mostrarDatoPrivado(const Base&);
// Declaración de clase amiga
friend class Amiga;
// Declaración de función virtual
virtual void imprimir() const {
cout << "Imprimir desde la clase Base." << endl;
}
};
// Definición de la clase Amiga
class Amiga {
public:
void mostrarDatoAmigo(const Base& objetoBase) {
cout << "Dato privado desde la clase Amiga: " << objetoBase.datoPrivado << endl;
}
};
// Definición de la función amiga
void mostrarDatoPrivado(const Base& objetoBase) {
cout << "Dato privado desde la función amiga: " << objetoBase.datoPrivado << endl;
}
// Definición de la clase derivada
class Derivada : public Base {
public:
Derivada(int dato) : Base(dato) {}
// Implementación de la función virtual
void imprimir() const override {
cout << "Imprimir desde la clase Derivada." << endl;
}
};
int main() {
Base baseObjeto(42);
Amiga amigaObjeto;
Derivada derivadaObjeto(99);
// Acceso a función amiga desde main
mostrarDatoPrivado(baseObjeto);
// Acceso a clase amiga desde main
amigaObjeto.mostrarDatoAmigo(baseObjeto);
// Llamada a función virtual desde la clase base
baseObjeto.imprimir();
// Llamada a función virtual desde la clase derivada
derivadaObjeto.imprimir();
return 0;
}