#include <iostream>
#include <cstdlib>
#include <cstring>

class ejemplo {
	private:
		char *mensaje;

	public:
		ejemplo(const char *);
		ejemplo(const ejemplo&);
		char *Men(void) const;
		~ejemplo(void);
};

ejemplo::ejemplo(const char* m)
{
	mensaje= new char [ strlen(m) + 1];			
	strcpy(mensaje, m);
	std::cerr << "objeto construido\n";
}

ejemplo::ejemplo(const ejemplo& e)
{
	mensaje= new char[ strlen(e.Men()) + 1];
	strcpy(mensaje, e.Men());
	std::cerr << "objeto construido a partir de otro objeto\n";
}

char *ejemplo::Men(void) const
{
	return mensaje;
}

ejemplo::~ejemplo(void)
{
	delete [] mensaje;
	std::cerr << "objeto destruido\n";
}

void print(ejemplo e)
{
	std::cout << e.Men() << std::endl;
}


int main(int argc, const char *argv[])
{
	ejemplo E("hola, ESFM");
	std::cerr << "mas cosas\n";
	print(E);
	std::cerr << "mas cosas\n";
	return EXIT_SUCCESS;
}
