с двойной точностью quad r2
class quad { // ... public: quad(double); // ... };
quad operator+(quad,quad);
void f(double a1, double a2) { quad r1 = a1+a2; // сложение с двойной точностью quad r2 = quad(a1)+a2; // вынуждает использовать // операции с типами quad }
В проектировании языка делался расчет на строго восходящий разбор, поскольку он более понятный, а кроме того, не дело транслятора решать такие вопросы, какую точность для сложения желает программист.
Однако, надо отметить, что если определились типы обеих частей в присваивании и инициализации, то для их разрешения используется они оба:
class real { // ... public: operator double(); operator int(); // ... };
void g(real a) { double d = a; // d = a.double(); int i = a; // i = a.int();
d = a; // d = a.double(); i = a; // i = a.int(); }
В этом примере выражения все равно разбираются строго восходящим методом, когда в каждый момент рассматриваются только одна операция и типы ее операндов.
on_load_lecture()
|
|
Дальше »
|
|
Если Вы заметили ошибку - сообщите нам. |
|
Страницы:
« |
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
вопросы | »
|
|
учебники
|
для печати и PDA
|
|
|
|
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru
© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование
|
Содержание Назад Вперед