Я застрял на операторах. Если операторы арифметики мне уже понятны, то операторы преобразования нифига. Лафоре очень хреново эту тему объясняет, а на ютубе роликов нет.
Можете объяснить, что например, будет делать operator float()? operator int()? Нутром чую, работа с операторами преобразования бесполезна.
C/C++
Операторы преобразования типов в C++
#include
using namespace std;
class Integer {
int value;
public:
Integer() : value(0) {}
Integer(const int value) : value(value) {}
operator int() { return value; }
};
int main() {
Integer i = 5;
int n = i;
}
Эти функции будут вызываться в следующих случаях:
MyClass x;
float y;
int z;
y = (float) x;
z = (int) x;
MyClass x;
float y;
int z;
y = (float) x;
z = (int) x;
Сергей 1
Какое лаконичное и красивое изложение. Спасибо
Ну самый тупой и простой пример:
float x = 1 / 2;
ожидаем 0.5 а получаем 0.
1 - это инт, 2 - это тоже инт, если два типа совпадают, то и результат арифметики будет таким же, инт. Т.е. 0, потому что инт отбрасывает дробные части. И затем этот ноль присваивается переменной x.
Чтобы получить 0.5 нужно одну или обе части деления привести к дробному типу.
float x = float(1) / 2;
Теперь результат float и инт даст флоат, так как реальные типы имеют больший приоритет чем целочисленные. Флоат уже умеет хранить дробные части, так что выражение будет иметь значение 0.5 которое и присвоится переменной x.
не путать с float x = float(1/2); так как выражение 1/2 будет иметь тип инт как и в первом случае и вернет 0.
float x = 1 / 2;
ожидаем 0.5 а получаем 0.
1 - это инт, 2 - это тоже инт, если два типа совпадают, то и результат арифметики будет таким же, инт. Т.е. 0, потому что инт отбрасывает дробные части. И затем этот ноль присваивается переменной x.
Чтобы получить 0.5 нужно одну или обе части деления привести к дробному типу.
float x = float(1) / 2;
Теперь результат float и инт даст флоат, так как реальные типы имеют больший приоритет чем целочисленные. Флоат уже умеет хранить дробные части, так что выражение будет иметь значение 0.5 которое и присвоится переменной x.
не путать с float x = float(1/2); так как выражение 1/2 будет иметь тип инт как и в первом случае и вернет 0.
Разве в этом может быть что-то не понятно?
float() преобразует к вещественному числу
int() - к целому числу
Вот и всё...
И это на практике бывает нужно очень часто
float() преобразует к вещественному числу
int() - к целому числу
Вот и всё...
И это на практике бывает нужно очень часто
Нутром чую, работа с операторами преобразования бесполезнаНеправильно чуюте, преобразование нужно допустим у вас координаты во float а функция принимает int, тогда нужно преобразовывать из float в int, иначе компилятор скажет что это ошибка.
Похожие вопросы
- Перегрузка оператора c++
- Как разработать динамические переменные с помощью оператора new и при этом удалены оператором delete C++? Можно пример?
- C++: На каких фреймворках, средах разработки C++ делаются большие проекты, по типу Photoshop, Unreal Engine, Steam?
- C++ помогите пожалуйста Организация ветвления с использованием оператора выбора
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Логический оператор И и ИЛИ в Си
- C++, Как сделать тип возврата из функции по ситуации / динамический? P.S.auto не поможет
- Задача по C++
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование C++ ПРОШУ ПОМОЧЬ!