Преобразования, определяемые классом CPP
Условно, все преобразования типов во многих языках, в том числе и C++, можно разделить на четыре основные группы:
- Cтандартный к стандартному - эти преобразования уже были нами подробно рассмотрены в одном из уроков.
- Cтандартный к абстрактному - преобразования этой группы основаны на использовании конструкторов.
#include <iostream>
using namespace std;
class Digit
{
private:
int dig;
public:
Digit(int iDig){
dig=iDig;
}
void Show(){
cout<<dig<<"\n";
}
};
void main()
{
// преобразование от int к Digit
Digit A(5);
A.Show();
// преобразование от double к Digit
Digit B(3.7);
B.Show();
}
Исходя из примера можно сделать вывод, что конструктор с одним аргументом Class::Class(type) всегда определяет преобразование типа type к типу Class, а не только способ создания объекта при явном обращении к нему.
- Абстрактный к стандартному
- Абстрактный к абстрактному
Для преобразования абстрактного типа к стандартному или абстрактного к абстрактному в С++ существует средство - функция, выполняющая преобразование типов, или оператор-функция преобразования типов. Она имеет следующий синтаксис:
Class::operator type (void);
Эта функция выполняет определенное пользователем преобразование типа Class к типу type. Эта функция должна быть членом класса Class и не иметь аргументов. Кроме того, в ее объявлении не указывается тип возвращаемого значения. Обращение к этой функции может быть как явным, так и неявным. Для выполнения явного преобразования можно использовать как традиционную, так и "функциональную" форму.
#include <iostream>
using namespace std;
class Number{
private:
int num;
public:
Number(int iNum){
num=iNum;
}
void Show(){
cout<<num<<"\n";
}
};
class Digit
{
private:
int dig;
public:
Digit(int iDig){
dig=iDig;
}
void Show(){
cout<<dig<<"\n";
}
//преобразование от Digit к int
operator int (){
return dig;
}
//преобразование от Digit к Number
operator Number (){
return Number(dig);
}
};
void main()
{
Digit A(5);
cout<<"In Digit A:\n";
A.Show();
// преобразование от Digit к int
int a=A;
cout<<"In int a:\n";
cout<<a<<"\n";
Digit B(3);
cout<<"In Digit B:\n";
B.Show();
Number b(0);
cout<<"In Number b (before):\n";
b.Show();
//преобразование от Digit к Number
b=B;
cout<<"In Number b (after):\n";
b.Show();
}
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга