Читайте также:
|
|
Преобразование типов близко к перегрузке операций. Некоторые преобразования происходят между основными типами и типами, определенными пользователем.
Когда мы пишем строку типа intvar = floatvar; то компилятор вызовет специальную функцию для преобразования значения переменной floatvar, которая имеет формат числа с плавающей точкой, в формат целого числа, чтобы мы могли присвоить его переменной intvar. Такие преобразования называются неявными, так как они не отражены в листинге.
Иногда мы хотим принудительно заставить компилятор преобразовать один тип в другой.
Использование оператора cast предоставляет нам явное преобразование:
intvar = static_cast<int>(floatvar);
Такое явное преобразование использует те же встроенные процедуры, что и неявное.
При изменении основного типа на определенный пользователем используется конструктор с одним аргументом(его иногда называют конструктором преобразования.):
Distance (float meters)
{
float fltfeet = 3.280833* meters; // переводим в футы
feet = int (fltfeet); // берем число полных футов
inches = 12 * (fltfeet – feet); // остаток — это дюймы
}
Таким образом, преобразование от float к переменной типа Distance выполняется вместе с созданием объекта в выражении Distance dist1 = 2.35.
Дата добавления: 2015-08-17; просмотров: 141 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Перегрузка бинарных операций | | | Предотвращение преобразования типов от основного к пользовательскому с помощью конструктора |