#include <iostream>
class A
{
private:
int a;
public:
A():a(0) {}
void printA() { std::cout << "a privat din A este: " << a << "\n"; }
};
class B: public A
{
private:
int b;
public:
B():b(-1) {}
/* o mare prostie, fac cast la inceputul obiectului in memorie si pentru ca il mosteneste pe A, inseamna ca
exista un int in memoria obiectului si il scriu subscriu cu 3 deci int a exista in memoria oricarui obiect de tip B */
void porcarie() { int* a = reinterpret_cast<int*>(this); *a=3; }
void printB() { std::cout << "b privat din B este: " << b << "\n"; }
};
int main()
{
//daca sizeof(int) == 4 (32 biti) atunci:
std::cout << sizeof(A) << "\n"; //4
std::cout << sizeof(B) << "\n"; //8, deci avem si int a si int b
B b;
b.printA(); // 0
b.printB(); // -1
b.porcarie();
b.printA(); // 3 !!! am modificat variabila privata a clasei A printr-un obiect de tip B
b.printB(); // -1, asta a ramas la fel
return 0;
};
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQQp7CnByaXZhdGU6CglpbnQgYTsKcHVibGljOgoJQSgpOmEoMCkge30KCXZvaWQgcHJpbnRBKCkgeyBzdGQ6OmNvdXQgPDwgImEgcHJpdmF0IGRpbiBBIGVzdGU6ICIgPDwgYSA8PCAiXG4iOyB9Cn07CgpjbGFzcyBCOiBwdWJsaWMgQQp7CnByaXZhdGU6CglpbnQgYjsKcHVibGljOgoJQigpOmIoLTEpIHt9CgkvKiBvIG1hcmUgcHJvc3RpZSwgZmFjIGNhc3QgbGEgaW5jZXB1dHVsIG9iaWVjdHVsdWkgaW4gbWVtb3JpZSBzaSBwZW50cnUgY2EgaWwgbW9zdGVuZXN0ZSBwZSBBLCBpbnNlYW1uYSBjYQoJZXhpc3RhIHVuIGludCBpbiBtZW1vcmlhIG9iaWVjdHVsdWkgc2kgaWwgc2NyaXUgc3Vic2NyaXUgY3UgMyBkZWNpIGludCBhIGV4aXN0YSBpbiBtZW1vcmlhIG9yaWNhcnVpIG9iaWVjdCBkZSB0aXAgQiAqLwoJdm9pZCBwb3JjYXJpZSgpIHsgaW50KiBhID0gcmVpbnRlcnByZXRfY2FzdDxpbnQqPih0aGlzKTsgKmE9MzsgIH0KCXZvaWQgcHJpbnRCKCkgeyBzdGQ6OmNvdXQgPDwgImIgcHJpdmF0IGRpbiBCIGVzdGU6ICIgPDwgYiA8PCAiXG4iOyB9Cn07CgppbnQgbWFpbigpCnsKCS8vZGFjYSBzaXplb2YoaW50KSA9PSA0ICgzMiBiaXRpKSBhdHVuY2k6IAoJc3RkOjpjb3V0IDw8ICBzaXplb2YoQSkgPDwgIlxuIjsgLy80CglzdGQ6OmNvdXQgPDwgc2l6ZW9mKEIpIDw8ICJcbiI7IC8vOCwgZGVjaSBhdmVtIHNpIGludCBhIHNpIGludCBiCgoJQiBiOwoJYi5wcmludEEoKTsgLy8gMAoJYi5wcmludEIoKTsgLy8gLTEKCWIucG9yY2FyaWUoKTsgCgliLnByaW50QSgpOyAvLyAzICEhISBhbSBtb2RpZmljYXQgdmFyaWFiaWxhIHByaXZhdGEgYSBjbGFzZWkgQSBwcmludHItdW4gb2JpZWN0IGRlIHRpcCBCCgliLnByaW50QigpOyAvLyAtMSwgYXN0YSBhIHJhbWFzIGxhIGZlbAoKCXJldHVybiAwOwp9Ow==