#include <iostream>
using namespace std;
class MojaKlasa
{
public:
int test;
MojaKlasa() : test(7) { cout << "MojaKlasa()" << endl; }
MojaKlasa(int test) : test(test) { cout << "MojaKlasa(" << test << ")" << endl; }
~MojaKlasa() { cout << "~MojaKlasa()" << endl; }
};
int main()
{
// alokujesz pamiec na 20 elementow
char* mem = new char[sizeof(MojaKlasa) * 20];
// ta sama pamiec reprezentowana jako tablica/wskaznik do elementow MojaKlasa
MojaKlasa* tab = (MojaKlasa*)mem;
cout << "tab[4].test = " << tab[4].test << endl;
new (&tab[4]) MojaKlasa();
cout << "tab[4].test = " << tab[4].test << endl;
tab[4].~MojaKlasa();
new (&tab[5]) MojaKlasa(9);
cout << "tab[5].test = " << tab[5].test << endl;
tab[5].~MojaKlasa();
cout << "Wywolaj konstruktory na 20-tu obiektach:" << endl;
new (tab) MojaKlasa[20]();
delete [] mem;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIE1vamFLbGFzYQp7CnB1YmxpYzoKICAgIGludCB0ZXN0OwogICAgTW9qYUtsYXNhKCkgOiB0ZXN0KDcpIHsgY291dCA8PCAiTW9qYUtsYXNhKCkiIDw8IGVuZGw7IH0KICAgIE1vamFLbGFzYShpbnQgdGVzdCkgOiB0ZXN0KHRlc3QpIHsgY291dCA8PCAiTW9qYUtsYXNhKCIgPDwgdGVzdCA8PCAiKSIgPDwgZW5kbDsgIH0KICAgIH5Nb2phS2xhc2EoKSB7IGNvdXQgPDwgIn5Nb2phS2xhc2EoKSIgPDwgZW5kbDsgfQp9OwoKaW50IG1haW4oKQp7CgkvLyBhbG9rdWplc3ogcGFtaWVjIG5hIDIwIGVsZW1lbnRvdwoJY2hhciogbWVtID0gbmV3IGNoYXJbc2l6ZW9mKE1vamFLbGFzYSkgKiAyMF07CgkvLyB0YSBzYW1hIHBhbWllYyByZXByZXplbnRvd2FuYSBqYWtvIHRhYmxpY2Evd3NrYXpuaWsgZG8gZWxlbWVudG93IE1vamFLbGFzYQoJTW9qYUtsYXNhKiB0YWIgPSAoTW9qYUtsYXNhKiltZW07CgkKCWNvdXQgPDwgInRhYls0XS50ZXN0ID0gIiA8PCB0YWJbNF0udGVzdCA8PCBlbmRsOwoJCgluZXcgKCZ0YWJbNF0pIE1vamFLbGFzYSgpOwoJY291dCA8PCAidGFiWzRdLnRlc3QgPSAiIDw8IHRhYls0XS50ZXN0IDw8IGVuZGw7Cgl0YWJbNF0ufk1vamFLbGFzYSgpOwoJCgluZXcgKCZ0YWJbNV0pIE1vamFLbGFzYSg5KTsKCWNvdXQgPDwgInRhYls1XS50ZXN0ID0gIiA8PCB0YWJbNV0udGVzdCA8PCBlbmRsOwoJdGFiWzVdLn5Nb2phS2xhc2EoKTsKCQoJY291dCA8PCAiV3l3b2xhaiBrb25zdHJ1a3RvcnkgbmEgMjAtdHUgb2JpZWt0YWNoOiIgPDwgZW5kbDsKCW5ldyAodGFiKSBNb2phS2xhc2FbMjBdKCk7CgkKCWRlbGV0ZSBbXSBtZW07CglyZXR1cm4gMDsKfQ==