Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Язык C++

Содержание

Исключения 1Синтаксис:try {}catch (тип имя) {}сatch (тип) {}catch(…) {}Порождение:throw [выражение];
C++exceptions, rtti, templates Исключения 1Синтаксис:try {}catch (тип имя) {}сatch (тип) {}catch(…) {}Порождение:throw [выражение]; Исключения 2Пример:void* malloc(size_t n) {	void* p = HeapAlloc(GetProcessHeap(), 0, n);	if(!p) throw “No Преобразования типов Синтаксис:1) тип (выражение);2) (тип) выражение;Примеры:const char* p = “asdf”; int const_castСинтаксис:const_cast (выражение);Выражение: константный указательТип: тот же что и тип выражения но без dynamic_cast 1Синтаксис:dynamic_cast (выражение);Выражение: указатель или ссылка на классТип: базовый или производный от dynamic_cast 2Примеры: // понижающее преобразование (downcast)1) class A { };class B : dynamic_cast 3Пример: // понижающее преобразование (downcast)#include class B {	public: virtual void Test();};class dynamic_cast 4Пример: // перекрёстное преобразование (crosscast)class A {	public: virtual void Test() {}};class dynamic_cast 5Пример: // перекрёстное преобразование (crosscast)class B {	public: virtual void Test1() {}};class static_cast 1Синтаксис:static_cast (выражение);Выражение: целые, вещественные, перечисляемые типы; указатели и ссылки в одной static_cast 2Примеры:class B { };class C: public B { };1) C c;B* reinterpret_castСинтаксис:reinterpret_cast (выражение);Выражение: любоеТип: любойВозвращаемое значение: переменная типа ‘тип’Примеры:char* p = reinterpret_cast(malloc(100));long l = reinterpret_cast(p); typeidСинтаксис:1) typeid(тип);2) typeid(выражение);Примеры:#include class B {	public: virtual void Test(){ }};class C: public
Слайды презентации

Слайд 2 Исключения 1
Синтаксис:
try {
}
catch (тип имя) {
}
сatch (тип) {
}
catch(…)

Исключения 1Синтаксис:try {}catch (тип имя) {}сatch (тип) {}catch(…) {}Порождение:throw [выражение];

{
}
Порождение:
throw [выражение];


Слайд 3 Исключения 2
Пример:
void* malloc(size_t n) {
void* p = HeapAlloc(GetProcessHeap(),

Исключения 2Пример:void* malloc(size_t n) {	void* p = HeapAlloc(GetProcessHeap(), 0, n);	if(!p) throw

0, n);
if(!p) throw “No memory”;
return p;
}
void func {
char* p1

= (char*)malloc(100);
char* p2 = (char*)malloc(100);
delete p2;
delete p1;
}
try {
func();
} catch(const char* p) {
printf(“Error: %s”, p);
}

Слайд 4 Преобразования типов
Синтаксис:
1) тип (выражение);
2) (тип) выражение;
Примеры:
const char*

Преобразования типов Синтаксис:1) тип (выражение);2) (тип) выражение;Примеры:const char* p = “asdf”;

p = “asdf”; int i; char* a;
1) i =

p;
2) i = (int)p;
3) i = int(p);
4) a = p;
5) a = (char*)p;
6) a = char*(p);

Слайд 5 const_cast
Синтаксис:
const_cast (выражение);
Выражение: константный указатель
Тип: тот же что

const_castСинтаксис:const_cast (выражение);Выражение: константный указательТип: тот же что и тип выражения но

и тип выражения но без const
Возвращаемое значение: переменую типа

‘тип’
Пример:
const char* p = “asdf”;
char* a = const_cast(p);


Слайд 6 dynamic_cast 1
Синтаксис:
dynamic_cast (выражение);
Выражение: указатель или ссылка на

dynamic_cast 1Синтаксис:dynamic_cast (выражение);Выражение: указатель или ссылка на классТип: базовый или производный

класс
Тип: базовый или производный от типа выражения
Возвращаемое значение: переменную

типа ‘тип’; при
ошибке: 1) ноль (если ‘тип’ – указатель)
2) исключение bad_cast (если ‘тип’ – ссылка)
Пример: // Повышающее преобразование (upcast)
class B { };
class C : public B { };
C* c = new C();
B* b = dynamic_cast(c);


Слайд 7 dynamic_cast 2
Примеры: // понижающее преобразование (downcast)
1) class A

dynamic_cast 2Примеры: // понижающее преобразование (downcast)1) class A { };class B

{ };
class B : public A { };
A* a

= new A();
B* b = dynamic_cast(a);

2) class A {
public: virtual void Test() {}
};
class B : public A {
public: virtual void Test() {}
};
A* a = new A();
B* b = dynamic_cast(a);


Слайд 8 dynamic_cast 3
Пример: // понижающее преобразование (downcast)
#include
class B

dynamic_cast 3Пример: // понижающее преобразование (downcast)#include class B {	public: virtual void

{
public: virtual void Test();
};
class C : public B {

};
void func(B& b) {
try {
С& с = dynamic_cast(b);
} catch (bad_cast) {
}
}
B* b = new B(); func(*b); // исключение
C* c = new C(); func(*c);


Слайд 9 dynamic_cast 4
Пример: // перекрёстное преобразование (crosscast)
class A {
public:

dynamic_cast 4Пример: // перекрёстное преобразование (crosscast)class A {	public: virtual void Test()

virtual void Test() {}
};
class B : public A {
};
class

C : public A {
};
void func(C* c) {
B* b = dynamic_cast(c);
}
B* b = new B();
func((C*)b);

Слайд 10 dynamic_cast 5
Пример: // перекрёстное преобразование (crosscast)
class B {
public:

dynamic_cast 5Пример: // перекрёстное преобразование (crosscast)class B {	public: virtual void Test1()

virtual void Test1() {}
};
class C {
public: virtual void Test2()

{}
};
class D : public B, public C {
};
void func(B* b) {
C* c = dynamic_cast(b);
}
D* d = new D();
func(dynamic_cast(d));


Слайд 11 static_cast 1
Синтаксис:
static_cast (выражение);
Выражение: целые, вещественные, перечисляемые типы;

static_cast 1Синтаксис:static_cast (выражение);Выражение: целые, вещественные, перечисляемые типы; указатели и ссылки в

указатели и ссылки в одной иерархии
Возвращаемое значение: переменую

типа ‘тип’
Пример:
float f = 10.0;
int i = static_cast(f);


Слайд 12 static_cast 2
Примеры:
class B { };
class C: public B

static_cast 2Примеры:class B { };class C: public B { };1) C

{ };
1) C c;
B* pb = static_cast(&c);
2) B b;
C&

rc = static_cast(b);

Слайд 13 reinterpret_cast
Синтаксис:
reinterpret_cast (выражение);
Выражение: любое
Тип: любой
Возвращаемое значение: переменная типа

reinterpret_castСинтаксис:reinterpret_cast (выражение);Выражение: любоеТип: любойВозвращаемое значение: переменная типа ‘тип’Примеры:char* p = reinterpret_cast(malloc(100));long l = reinterpret_cast(p);

‘тип’
Примеры:
char* p = reinterpret_cast(malloc(100));
long l = reinterpret_cast(p);


Слайд 14 typeid
Синтаксис:
1) typeid(тип);
2) typeid(выражение);
Примеры:
#include
class B {
public: virtual void

typeidСинтаксис:1) typeid(тип);2) typeid(выражение);Примеры:#include class B {	public: virtual void Test(){ }};class C:

Test(){ }
};
class C: public B { };
C* c =

new C();
B* b = c;
if(typeid(c) == typeid(C*)) {
C* cc = dynamic_cast(b);
}
printf("%s|%s|%s", typeid(int).name(), typeid(c).name(), typeid(*c).name());

  • Имя файла: yazyk-c.pptx
  • Количество просмотров: 96
  • Количество скачиваний: 0