12.07.2015 Views

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

C++ - VideoTutorials-bg.com

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

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

Обръщението sum(p, q).print() извежда 8/7. Този резултат може дасе обясни по следния начин. Тъй като r1 и r2 са параметристойности, те се свързват с фактическите си параметри чрезприсвояване. В резултат r1 се свързва с ½ (не с 0/1), а r2 – с 2/3(не с ½). След изпълнението на инициализациятаrat r(r1.get_numer()*r2.get_denom()+r2.get_numer()*r1.get_denom(),r1.get_denom()*r2.get_denom());/чрез двуаргументния конструктор rat(int, int)/ обектът r сесвързва със 7/6. Тъй като функцията rat е от тип rat, приизпълнение на return r; се прави още едно прилагане на глупавотоприсвояване и се получава 8/7.б) rat sum(rat const & r1, rat const & r2){rat r(r1.get_numer()*r2.get_denom()+r2.get_numer()*r1.get_denom(),r1.get_denom()*r2.get_denom());return r;}Сега обръщението sum(p, q).print() извежда 2/3. Този резултат можеда се обясни по следния начин. Тъй като r1 и r2 са параметрипсевдоними, те директно се свързват с фактическите си параметри(не се извършва присвояване), т.е. r1 се свързва с 0/1, а r2 –1/2. След изпълнението на инициализациятаrat r(r1.get_numer()*r2.get_denom()+r2.get_numer()*r1.get_denom(),r1.get_denom()*r2.get_denom());r се свързва със 1/2. Аналогично на случай а), при изпълнение наreturn r; се прилагане “глупавото” присвояване и се получава 2/3.в) rat sum(rat* r1, rat* r2){rat r(r1->get_numer()*r2->get_denom()+r2->get_numer()*r1->get_denom(),r1->get_denom()*r2->get_denom());return r;}иrat* p1 = &p,* q1 = &q;41

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

Saved successfully!

Ooh no, something went wrong!