domingo, 23 de agosto de 2015

Accediendo a Miembros Privados de la clase base en Visual Studio 2013


Caja.h

#pragma once

class Caja
{
public:
 explicit Caja(double tv = 1.0, double anv = 1.0, double alv = 1.0) :
  m_Tam{ tv }, m_Ancho{ anv }, m_Alto{ alv } {}

 //funcion para calcular el volumen del objeto caja
 double volumen() const
 {
  return m_Tam * m_Ancho * m_Alto;
 }

private:
 double m_Tam;
 double m_Ancho;
 double m_Alto;
};


CajaJuguetes.h

#pragma once

#include <cstring>
#include "Caja.h"

class CajaJuguetes : public Caja
{
public:
 char *m_Contenidos;

 explicit CajaJuguetes(const char *str = "Juguetes") //Constructor
 {
  size_t tam{ strlen(str) + 1 };
  m_Contenidos = new char[tam];
  strcpy_s(m_Contenidos, tam, str);
 }

 CajaJuguetes(const CajaJuguetes &caja) = delete;
 CajaJuguetes operator=(const CajaJuguetes &caja) = delete;

 ~CajaJuguetes() //Destructor
 {
  delete[] m_Contenidos;
 }
};


Main.cpp

//Usando una funcion para heredar de la clase base
#include <iostream>
#include "CajaJuguetes.h"

using namespace std;

int main()
{
 Caja miCaja{ 4.0, 3.0, 2.0 };
 CajaJuguetes miCajaJuguetes;
 CajaJuguetes miCajaLegos{"Lego"};

 //muestra la cantidad de memoria que los objetos requiren
 cout << "miCaja ocupa: " << sizeof miCaja
  << " bytes" << endl
  << "miCajaJuguetes ocupa: " << sizeof miCajaJuguetes
  << " bytes" << endl
  << "miCajaLegos ocupa: " << sizeof miCajaLegos
  << " bytes" << endl;

 cout << "El volumen de miCajaLegos es: " << miCajaLegos.volumen() << endl;

 system("pause");
 return 0;
}

No hay comentarios:

Publicar un comentario