До сих пор мы говорили о встроенных типах, т.е. типах, определенных в самом языке.
Предположим, в программе необходимо оперировать комплексными числами. Комплексные числа состоят из вещественной и мнимой частей, и с ними можно выполнять арифметические операции.
class Complex {
public:
int real; // вещественная часть
int imaginary; // мнимая часть
void Add(Complex x);
// прибавить комплексное число
};
Приведенный выше пример - упрощенное определение Complex, представляющее комплексное число. Комплексное число состоит из вещественной части - целого числа real и мнимой части, которая представлена целым числом imaginary. real и imaginary - это Complex объявлена одна Add.
Определив Complex:
Complex number;
Переменная с именем number содержит значение типа Complex, то есть содержит Complex. Имея
number.real = 1; number.imaginary = 2;
Complex, мы можем прибавить его к первому:
Complex num2; number.Add(num2);
Как можно заметить, Add выполняется с number, записано первым. Через точку записано имя метода - Add с аргументом - значением другого Complex, который прибавляется к number. number посылается сообщение Add с аргументом num2. number принимает это сообщение и складывает свое значение со значением аргумента сообщения.
Данные рассуждения будут яснее, если мы определим, как выполняется
void
Complex::Add(Complex x)
{
this->real = this->real + x.real;
this->imaginary = this->imaginary +
x.imaginary;
}
Первые две строки говорят о том, что это Add Complex. В фигурных скобках записано определение операции или Add. Это определение означает следующее: для того чтобы прибавить значение Complex к данному
Запись this-> говорит о том, что Add ( Add ). В большинстве случаев this-> можно опустить. В записи определения
Теперь приведем этот небольшой пример полностью:
// определение класса комплексных чисел
class Complex {
public:
int real; // вещественная часть
int imaginary; // мнимая часть
void Add(Complex x);
// прибавить комплексное число
};
// определение метода сложения
void
Complex::Add(Complex x)
{
real = real + x.real;
imaginary = imaginary + x.imaginary;
}
int
main()
{
Complex number;
number.real = 1;
// первый объект класса Complex
number.imaginary = 3;
Complex num2;
// второй объект класса Complex
num2.real = 2;
num2.imaginary = 1;
number.Add(num2);
// прибавить значение второго
// объекта к первому
return 1;
}
В языке Си++ можно сделать так, что x + y. В языке Си++ считается, что подобная запись - это также вызов x. Перепишем определение Complex:
// определение класса комплексных чисел
class Complex
{
public:
int real; // вещественная часть
int imaginary; // мнимая часть
// прибавить комплексное число
Complex operator+(const Complex x) const;
};
Вместо Add появился метод operator+. Изменилось и его определение. Во-первых, этот метод возвращает значение типа Complex ( const. Это слово обозначает, что при выполнении данного метода аргумент изменяться не будет. Также const появилось после объявления const означает, что x + y над двумя величинами x и y сами эти величины не изменяются. Теперь запишем определение операции сложения:
Complex
Complex::operator+(const Complex x) const
{
Complex result;
result.real = real + x.real;
result.imaginary = imaginary + x.imaginary;
return result;
}
Как и при объявлении функций, язык Си++ допускает определение в одном
// определение класса комплексных чисел
class Complex
{
public:
int real; // вещественная часть
int imaginary; // мнимая часть
// прибавить комплексное число
Complex operator+(const Complex x) const;
// прибавить целое число
Complex operator+(long x) const;
};
В следующем примере вначале складываются два комплексных числа, и вызывается первая +. Затем к комплексному числу прибавляется целое число, и тогда выполняется вторая операция сложения.
Complex c1; Complex c2; long x; c1 + c2; c2 + x;
Аналогично можно задавать значения
Как уже отмечалось раньше, выбор имен - это не праздный вопрос. Существует множество систем именования
Имена
Complex, String, StudentLibrarian
Имена
Add, Concat
Имена
real, classElement
При записи определения class и имя
До сих пор мы говорили о встроенных типах, т.е. типах, определенных в самом языке.
Предположим, в программе необходимо оперировать комплексными числами. Комплексные числа состоят из вещественной и мнимой частей, и с ними можно выполнять арифметические операции.
class Complex {
public:
int real; // вещественная часть
int imaginary; // мнимая часть
void Add(Complex x);
// прибавить комплексное число
};
Приведенный выше пример - упрощенное определение Complex, представляющее комплексное число. Комплексное число состоит из вещественной части - целого числа real и мнимой части, которая представлена целым числом imaginary. real и imaginary - это Complex объявлена одна Add.
Определив Complex:
Complex number;
Переменная с именем number содержит значение типа Complex, то есть содержит Complex. Имея
number.real = 1; number.imaginary = 2;
Complex, мы можем прибавить его к первому:
Complex num2; number.Add(num2);
Как можно заметить, Add выполняется с number, записано первым. Через точку записано имя метода - Add с аргументом - значением другого Complex, который прибавляется к number. number посылается сообщение Add с аргументом num2. number принимает это сообщение и складывает свое значение со значением аргумента сообщения.
Данные рассуждения будут яснее, если мы определим, как выполняется
void
Complex::Add(Complex x)
{
this->real = this->real + x.real;
this->imaginary = this->imaginary +
x.imaginary;
}
Первые две строки говорят о том, что это Add Complex. В фигурных скобках записано определение операции или Add. Это определение означает следующее: для того чтобы прибавить значение Complex к данному
Запись this-> говорит о том, что Add ( Add ). В большинстве случаев this-> можно опустить. В записи определения
Теперь приведем этот небольшой пример полностью:
// определение класса комплексных чисел
class Complex {
public:
int real; // вещественная часть
int imaginary; // мнимая часть
void Add(Complex x);
// прибавить комплексное число
};
// определение метода сложения
void
Complex::Add(Complex x)
{
real = real + x.real;
imaginary = imaginary + x.imaginary;
}
int
main()
{
Complex number;
number.real = 1;
// первый объект класса Complex
number.imaginary = 3;
Complex num2;
// второй объект класса Complex
num2.real = 2;
num2.imaginary = 1;
number.Add(num2);
// прибавить значение второго
// объекта к первому
return 1;
}
В языке Си++ можно сделать так, что x + y. В языке Си++ считается, что подобная запись - это также вызов x. Перепишем определение Complex:
// определение класса комплексных чисел
class Complex
{
public:
int real; // вещественная часть
int imaginary; // мнимая часть
// прибавить комплексное число
Complex operator+(const Complex x) const;
};
Вместо Add появился метод operator+. Изменилось и его определение. Во-первых, этот метод возвращает значение типа Complex ( const. Это слово обозначает, что при выполнении данного метода аргумент изменяться не будет. Также const появилось после объявления const означает, что x + y над двумя величинами x и y сами эти величины не изменяются. Теперь запишем определение операции сложения:
Complex
Complex::operator+(const Complex x) const
{
Complex result;
result.real = real + x.real;
result.imaginary = imaginary + x.imaginary;
return result;
}
Как и при объявлении функций, язык Си++ допускает определение в одном
// определение класса комплексных чисел
class Complex
{
public:
int real; // вещественная часть
int imaginary; // мнимая часть
// прибавить комплексное число
Complex operator+(const Complex x) const;
// прибавить целое число
Complex operator+(long x) const;
};
В следующем примере вначале складываются два комплексных числа, и вызывается первая +. Затем к комплексному числу прибавляется целое число, и тогда выполняется вторая операция сложения.
Complex c1; Complex c2; long x; c1 + c2; c2 + x;
Аналогично можно задавать значения
Как уже отмечалось раньше, выбор имен - это не праздный вопрос. Существует множество систем именования
Имена
Complex, String, StudentLibrarian
Имена
Add, Concat
Имена
real, classElement
При записи определения class и имя
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.