31.12.2014 Views

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Juk klas÷ Complex neturi metodo<br />

Complex Complex::add (double d);<br />

C++ už "programuotojo nugaros" atlieka automatinę tipų konversiją naudojant<br />

konstruktorių. Aukščiau užrašyta eilut÷ yra ekvivalentiška žemiau esančiai:<br />

a = a.add( Complex(0.5) );<br />

Toks išreikštinis ar neišreikštinis konstruktoriaus kvietimas sukuria laikiną<br />

automatinį objektą, egzistuojantį tik išraiškos skaičiavimo metu.<br />

O ką, jei mes nenorime, kad kompiliatorius už programuotojo nugaros kviestų<br />

konstruktorių tipų konversijai atlikti <strong>ir</strong> laikinam objektui sukurti T.y. mes patys<br />

norime valdyti, kas <strong>ir</strong> kada yra kviečiama. Tuo tikslu, aprašant konstruktorių,<br />

naudojamas raktinis žodis explicit:<br />

class Complex<br />

{<br />

...<br />

explicit Complex (double re=0, double im=0);<br />

};<br />

void f ()<br />

{<br />

Complex a (10, 2);<br />

...<br />

a = a.add(0.5); // syntax error<br />

a = a.add(Complex(0.5)); // OK<br />

}<br />

65

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!