#include <iostream>
class Example {
private:
int a;
// lots of important variables that live on the heap
public:
int getA() { return a; }
// Example() = default;
Example() {
std::cout << "default constructor" << std::endl;
a = 0;
}
Example(int a_local) {
a = a_local;
std::cout << "custom constructor" << std::endl;
/* allocating memory, etc. ... */
}
};
int main() {
std::cout << "Running default constructor" << std::endl;
Example e1;
std::cout << "e1.a is " << e1.getA() << std::endl;
std::cout << "Running custom constructor" << std::endl;
Example e2(500);
std::cout << "e2.a is " << e2.getA() << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRXhhbXBsZSB7CiAgICBwcml2YXRlOgogICAgICAgIGludCBhOwogICAgICAgIC8vIGxvdHMgb2YgaW1wb3J0YW50IHZhcmlhYmxlcyB0aGF0IGxpdmUgb24gdGhlIGhlYXAKICAgIHB1YmxpYzoKICAgICAgICBpbnQgZ2V0QSgpIHsgcmV0dXJuIGE7IH0KICAgICAgICAKICAgICAgICAvLyBFeGFtcGxlKCkgPSBkZWZhdWx0OwogICAgICAgIEV4YW1wbGUoKSB7CiAgICAgICAgCXN0ZDo6Y291dCA8PCAiZGVmYXVsdCBjb25zdHJ1Y3RvciIgPDwgc3RkOjplbmRsOwogICAgICAgIAlhID0gMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgRXhhbXBsZShpbnQgYV9sb2NhbCkgewogICAgICAgICAgICBhID0gYV9sb2NhbDsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJjdXN0b20gY29uc3RydWN0b3IiIDw8IHN0ZDo6ZW5kbDsKICAgICAgICAgICAgLyogYWxsb2NhdGluZyBtZW1vcnksIGV0Yy4gLi4uICovCiAgICAgICAgfQp9OwoKaW50IG1haW4oKSB7CglzdGQ6OmNvdXQgPDwgIlJ1bm5pbmcgZGVmYXVsdCBjb25zdHJ1Y3RvciIgPDwgc3RkOjplbmRsOwoJRXhhbXBsZSBlMTsKCXN0ZDo6Y291dCA8PCAiZTEuYSBpcyAiIDw8IGUxLmdldEEoKSA8PCBzdGQ6OmVuZGw7CgkKCXN0ZDo6Y291dCA8PCAiUnVubmluZyBjdXN0b20gY29uc3RydWN0b3IiIDw8IHN0ZDo6ZW5kbDsKCUV4YW1wbGUgZTIoNTAwKTsKCXN0ZDo6Y291dCA8PCAiZTIuYSBpcyAiIDw8IGUyLmdldEEoKSA8PCBzdGQ6OmVuZGw7Cn0=