Программирование >>  Инициализация объектов класса, структура 

1 ... 48 49 50 [ 51 ] 52 53 54 ... 395


#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:



1 ... 48 49 50 [ 51 ] 52 53 54 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика