Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
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