|
Программирование >> Инициализация объектов класса, структура
#include <complex> inline complex<double>s operator+=( complex<double> scval, double dval ) { return cval += complex<double>( dval ); (Это пример перегрузки оператора для определенного типа данных, детально рассмотренной в главе 15.) Используя этот пример, реализуйте три других составных оператора присваивания для типа complex<double>. Добавьте свою реализацию к программе, приведенной ниже, и #include <iostream> #include <complex> определения операций... int main() { complex< double > cval ( 4.0, 1.0 ); cout << cval << endl; cval += 1; cout << cval << endl; cval -= 1; cout << cval << endl; cval *= 2; cout << cval << endl; cout /= 2; cout << cval << endl; запустите ее для проверки. Упражнение 4.10 Стандарт С++ не специфицирует реализацию операций инкремента и декремента для комплексного числа. Однако их семантика вполне понятна: если уж мы можем написать: cval += 1; что означает увеличение на 1 вещественной части cval, то и операция инкремента выглядела бы вполне законно. Реализуйте эти операции для типа complex<double> и выполните следующую программу: #include <iostream> #include <complex> определения операций... int main() { complex< double > cval( 4.0, 1.0 ); cout << cval << endl; ++cva1; cout << cval << endl; 4.7. Условное выражение Условное выражение, или оператор выбора, предоставляет возможность более bool is equal; if (!strcmp(str1,str2)) is eal = true; компактной записи текстов, включающих инструкцию if-else. Например, вместо: else is eal = false; можно употребить более компактную запись: bool is ea1 = !strcmp( strl, str2 ) ? true : false; Условный оператор имеет следующий синтаксис: expr11 ? expr2 : expr3; Вычисляется выражение expr1. Если его значением является true, оценивается expr2, int min( int ia, int ib ) если false, то expr3. Данный фрагмент кода: { return ( ia < ib ) ? ia : ib; } int min(int ia, int ib) { if (ia < ib) return ia; else return ib; эквивалентен Приведенная ниже программа иллюстрирует использование условного оператора: #include <iostream> int main() { i = 10, j = 20, k = 30; int i = 10, j = 20, k cout << Большим из cout << i << и << j << является << ( i > j ? i : j ) << end1; cout << Значение << i << ( i % 2 ? нечетно. : четно. ) << endl; /* условн оператор может быть вложенн, * но глубокая вложенность трудна для восприятия. * В данном примере max получает значение * максимальной из трех величин */ int max = ( (i > j) ? (( i > k) ? i : k) : ( j > k ) ? j : k); cout << Большим из << i << , << j << и << k << является << max << endl; Результатом работы программа: будет: Большим из 10 и 20 является 20 Значение 10 четно. 4.8. Оператор sizeof Оператор sizeof возвращает размер в байтах объекта или типа данн1х. Синтаксис его sizeof ( type name ); sizeof ( object ); таков: sizeof object; Результат имеет специальный тип size t, который определен как typedef в заголовочном файле cstddef. Вот пример использования обеих форм оператора sizeof:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |