Конспект-справочник 'Моделирование на C++'



Download 1,26 Mb.
Pdf ko'rish
bet12/62
Sana20.03.2022
Hajmi1,26 Mb.
#504043
1   ...   8   9   10   11   12   13   14   15   ...   62
Приведение типа 
Приведение типа

преобразование одного типа в другой 
Неявное 
приведение типов

преобразование типа без явного указания в тексте 
программы, к какому типу оно осуществляется. Пример: 
double pi=3.14; 
int x=pi
; // вещественное число неявно преобразуется в целое 
Явное приведение типов

преобразование типа с явным указанием 
результирующего типа. Пример: 
double pi=3.14; 
int x=static_cast(pi); // вариант №1 (основной). Также см dynamic_cast, 
// reinterpret_cast, const_cast 
int x=int(pi); // вариант №2 (функциональна нотация) 
int x=(int)pi; // вариант №3 (в стиле С) 
Динамическое преобразование 
Динамическое преобразование позволяет во время исполнения 
программы преобразовать тип указателей или ссылок.В случае преобразования 
к несовместимому типу будет получен нулевой указатель для преобразования 
указателя и сгенерировано исключение 'bad_cast' для ссылки. Преобразование 
корректно используется для приведения объектов производных классов к 
базовым классам. 
class Base
{
}; 
class Derived: public Base 
{
}; 

Base b, *pb; 
Derived d, *pd; 

pb = dynamic_cast(&d); // ok
: производный к базовому 
pd = dynamic_cast(&b
); // ошибка при компиляции: неполиморфный 
// 
базовый приводится к производному 

// если базовый сделать полиморфным (дать
// 
ему виртуальную функцию) то
// 
преобразование вернет нулевой указатель 
Статическое преобразование 
Явное статическое преобразование используется для приведение одного 
типа к другому на этапе компиляции. Преобразоввываться могут объекты, 
ссылки и указатели. Допустимо преобразование указателя базового класса к 
указателю производного или указателя типа 'void*' к типизированному 
указателю. Корректость преобразования лежит в ответтвенности программиста, 
его использующего. 
22 


pd = static_cast(pb
); // преобразование указателя к указателю на
// 
производный класс может привести к
// 
неопределенному поведению 
 
#include  
Base *p = static_cast(malloc( sizeof(Base) )); // преобразование
// 
указателя 'void*'
// 
к 'Base*' 
Также статическое преобразованием используется для явного 
преобразования встроенных типов и преобразования между типами, для 
которых оно определено явным образом ( 'operator Type()' ) 
double pi=3.14; 
int i = static_cast(pi); 
 
class A 

 
}; 
class B 

public: 
operator A
() // оператор преобразования в класс 'A'; 

return A();
// может быть что то более осмысленное, возвращающее 'A'. 

}; 
 
A a; 
B b; 
 
a=static_cast(b); 
 
a = b
; // неявное преобразование к А и затем присваивание 

Download 1,26 Mb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish