numeric_cast

Korzystając z wzorca numeric_limits, o którym wspomniałem w poprzedniej notce i informacjach o min/max wartości danego typu numerycznego, można w bardzo łatwy sposób stworzyć sobie bezpieczny, odporny na underflow/overflow, „operator” – wzorzec do konwersji wartości liczbowych pomiędzy poszczególnymi typami numerycznymi. template <typename TargetType, typename SourceType> inline TargetType numeric_cast(SourceType arg) {   if (arg < std::numeric_limits<TargetType>::min()) … Czytaj dalej numeric_cast

Niejawne przekształcenia typów

Konwersje typów zdefiniowanych przez użytkownika, czyli klas jest możliwa poprzez zdefiniowanie odpowiednich konstruktorów, aby umożliwić przekształcanie z jakiegoś innego typu na nasz typ  lub odpowiednich operatorów przekształcania (czasem zwanych operatorami konwersji lub rzutowania) do przekształcania naszego zdefiniowanego typu w inny typ. class X { public: X(int n); operator int(); operator double(); }; Operator konwersji i … Czytaj dalej Niejawne przekształcenia typów