Untitled
unknown
c_cpp
2 years ago
1.0 kB
3
Indexable
Never
class Example { public: Example(int& other) : // upi: Default ctor kinullazza magat, ami tok jo. // pi: Ha ezt nem nullazod ki akkor szemet lesz benne, ami biztos bug forras. pi (nullptr) // ri: Referencia nem lehet null, tehat ezt muszaj az init listaban beallitani. ri(other) // i: Default ctor kinullazza. { // upi es i itt is kaphat erteket, sot akar egy masik fuggvenyben is. // Addig mindketto egy valid nulla erteket kepvisel. // pi-vel es ri-vel muszaj foglalkozni mar az init listaban. } void lateSetter(int& newValue) { upi.reset(&newValue); i = newValue; // Ez effektive ugyanaz mint "upi.reset(new int(5));" de szebb mert nincs // lathato "new" hasznalat. Viszont a make_unique csak publikus ctorokkal // tud dolgozni. upi = std::make_unique<int>(5); } private: std::unique_ptr<int> upi; int* pi; int& ri; int i; }; int main() { int externalI = 21; Example e(externalI); e.lateSetter(externalI); }