Se on hölynpölyä tehdä palkan vaihteleva; olet vain mikä mahdollistaa koodin, joka saa jatkuvasti esine sotkea palkkaa. Jos työntekijä on vakio, sinun ei pitäisi Messing kanssa hänen palkkaansa.
Joten mitä jos haluat työntekijän nimi ja id olevan vakio, mutta ei palkkaa? No, vain sanoa niin!
class Työntekijä {julkinen: Työntekijä (string name = "No Name", string id = "000-00-0000", kaksinkertainen palkka = 0): _name (nimi), _ID (id) {_salary = palkka; } String getName () const {paluu _name;} string getid () const {paluu _ID;} kaksinkertainen getSalary () const {palata _salary;} void setSalary (double palkka) {_salary = palkka;} void edistää (double palkka) { _salary = palkka;} yksityinen: const string _name; const string _ID; kaksinkertainen _salary; };
Nyt he jatkuvasti.
Tietenkin tämä tarkoittaa, että voit vain asettaa heidät rakentaja.
Joten jos edellä hulluus ei ole mitä epävakainen on, mitä se on? Tässä on hienovarainen asia: epävakainen on tapaus, jossa kohde on loogisesti vakio, mutta käytännössä on muututtava. Nämä tapaukset ovat harvassa, mutta ne ovat olemassa. Tässä yksi esimerkki: Sinulla on vakio esine, mutta virheenjäljitykseen tarkoituksiin haluat seurata, kuinka usein jatkuvaa menetelmää kutsutaan sitä. Loogisesti et muuttaa objekti. Huomaa, että jos teet päätöksiä oman ohjelma perustuu epävakainen muuttuja, olet lähes varmasti rikkonut loogisen constness ja on harkittava uudelleen asioita. class Työntekijä {julkinen: Työntekijä (vakio std :: string & nimi): _name (nimi), _access_count (0) {} void joukon_nimi (vakio std :: string & nimi) {_name = nimi; } Std :: string get_name () const {_access_count ++; palata _name; } Int get_access_count () const {paluu _access_count; } Yksityinen: std :: string _name; epävakainen int _access_count; }; monimutkaisempi esimerkiksi saatat haluta välimuistiin tuloksia kallis toimenpide: * /Pi = 4; varten (pitkä askel = 3; vaihe Nyt emme laskea pi, kunnes joku kysyy sitä, mutta kun he me välimuistiin tulos, joka on hyvä, koska olemme laskettaessa se todella hidas ja tyhmä tavalla. Loogisesti toiminto on edelleen vakio (pii ei ole muuttumassa). Lopulta sinun lähes varmasti ei tarvitse class MathObject {julkinen: MathObject (): pi_cached (false) {} kaksinkertainen PI () const {jos (! pi_cached) {/* Tämä on mielettömän hidas tapa laskea pi.
Lausunnot ja Javascript Eval Function