Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
Презентация к докладу «Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection» с конференции .NEXT SPb 2015 (Санкт-Петербург, 5 июня 2015)
http://spb2015.dotnext.ru/#cvetkih_talk
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
Обобщенное программирование - это подход к программированию, когда алгоритм пишется без указания конкретных типов данных. Используя данный подход можно значительно увеличить количество повторно используемого кода. В C++ данный подход реализуется за счет механизма шаблонов. В данном докладе рассмотрим некоторые возможности по обобщенному программированию, которые предоставляет C++. На конкретных примерах рассмотрим, как они могут упростить нам жизнь и с какими трудностями приходится сталкиваться при их использовании.
Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
Доклад посвящён различным аспектам компилятора С++, созданного с участием автора. В выступлении рассказывается о продвинутой архитектуре компилятора, основных проектных решениях, а также обсуждаются особенности входного языка, повлиявшие на реализацию компилятора.
Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs ReflectionDenis Tsvettsih
Презентация к докладу «Roslyn API: SyntaxTree vs CodeDom, SemanticModel vs Reflection» с конференции .NEXT SPb 2015 (Санкт-Петербург, 5 июня 2015)
http://spb2015.dotnext.ru/#cvetkih_talk
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
Обобщенное программирование - это подход к программированию, когда алгоритм пишется без указания конкретных типов данных. Используя данный подход можно значительно увеличить количество повторно используемого кода. В C++ данный подход реализуется за счет механизма шаблонов. В данном докладе рассмотрим некоторые возможности по обобщенному программированию, которые предоставляет C++. На конкретных примерах рассмотрим, как они могут упростить нам жизнь и с какими трудностями приходится сталкиваться при их использовании.
Презентация для курса лекций по программированию на языке C Sharp (СИ решетка). Материал разработан специально для ресурса www.studentam-in.ru на котором Вы можете найти бесплатные учебные материалы и получить качественные образовательные услуги: китайский и английский перевод; репетиторство; заказ курсовых, контрольных; создание презентации, баннера, контента, сайта и многое другое.
Primul pas de gestionare server este optinerea informatiei necesare din sistem de operare. In aceasta prezentare se vorbeste despre instrumente de acces la informatie in SO WIndows, Linux.
2. Содержание
Типы данных
Примитивные типы данных
Составные типы данных
Ссылочные типы
Типы значений
Перечислимые типы
интерфейсы
Новые свойства классов
Свойства
Делегаты
События
3. Типы данных
C++/CLI – язык, который позволяет создавать
как управляемый, так и неуправляемый код.
Управляемый код располагается в управляемой
куче.
Управляемые типы данных унаследованы от
типа Object.
4. Примитивные типы данных
Управляемый тип Соответствие
Boolean bool
Byte unsigned char
Char wchar_t
Double double
Int16 short
Int32 long, int
Int64 __int64, long long
SByte char
Single float
UInt16 unsigned short
UInt32 unsigned int, unsigned long
Uint64 unsigned __int64, unsigned long long
Void void
5. Составные типы данных:
ссылочные типы
Обладают семантикой ссылок
Переменные хранятся в
ссылочной куче
Обращение к переменным
осуществляется через
дескриптор
Дескриптор в процессе
выполнение программы
может меняться («уплотнение
кучи»)
Выделение памяти – при
помощи gcnew
Переменная, не ссылающаяся
на память в куче, равна nullptr
ref class Man{
String^ name;
Byte age;
public:
Man(): age(0)
{
name = gcnew String("");
}
Man(String^ n, Byte a): age(a)
{
name = n;
}
};
Man^ m = gcnew Man(“Henry“, 20);
6. Составные типы данных:
типы значений
value struct Point
{
Int32 x, y;
};
Point pt;
Простая структура
Память выделяется в стеке
программы
Вычисления более
эффективны, чем с
ссылочными типами
7. Составные типы данных:
перечислимые типы
Эквивалентен enum
из обычного С++
Унаследован от
Object
Есть свойство
ToString
enum class COLOR
{
BLACK = 0,
RED, GREEN,
BLUE, WHITE
};
COLOR c = COLOR::RED;
8. Составные типы данных:
интерфейсы
interface class Shape {
void Draw();
void Move(Int32, Int32);
};
value struct Point: Shape {
Int32 x, y;
virtual void Move(Int32 dx,
Int32 dy) {
x += dx;
y += dy;
}
virtual void Draw(){}
};
В С++/CLI нет множественного
наследования
Интерфейс – тип данных,
объявляющий методы, но не
имеющий полей и реализаций
методов
Интерфейс эквивалентен
абстрактным классам в С++
Управляемый класс может
быть унаследован от
множества интерфейсов
9. Новые свойства классов:
свойства
Свойства (properties)-
специальная языковая
конструкция,
предназначенная для
установки/получения
значения некоторого поля.
ref struct Value {
property int x;
};
//…
ref struct Value {
property int x {
void set(int v){ this->__x
= v; }
int get() const { return
this->__x; }
}
private:
int __x;
};
10. Новые свойства классов:
делегаты
delegate void Reshape();
ref struct Shape{
Shape(){}
void Draw(){}
};
ref struct Point{
property int x;
property int y;
Reshape^ reshape;
Point(){
reshape = gcnew Reshape(gcnew
Shape(), &Shape::Draw);
}
};
int main(){
Point^ p = gcnew Point();
p->reshape();
return 0;
}
делегирование – передача
управления объектом другому
объекту (или
функции/функциям)
Объявляется при помощи
ключевого слова delegate
Делегаты унаследованы от
System::MulticastDelegate
Делегат связывается со
списком функций
Добавление в список функций
– +=, удаление из списка
функций – -=.
Выполнение делегата –
Void Invoke();
11. Новые свойства классов:
события
События – один из видов
делегатов
объявляются при помощи
ключевого слова event
Функции, связываемые с
событием, называются
обработчиками события
System::EventHandler –
базовый тип событий
Базовый вид обработчика
событий –
Void OnEvent(Object^
sender, EventArgs^ args);
ref class Car{
Int32 speed;
public:
event EventHandler^
lowTemperature;
Car(Int32 initSpeed):
speed(initSpeed) {
lowTemperature += gcnew
EventHandler(this,
&Car::OnLowTemperature);
}
Void OnLowTemperature(Object^
sender, EventArgs^ args){
speed = 0;
}
};
12. Виртуальные функции
При переопределении
виртуальной функции
базового класса, после её
объявления указывается
модификатор override. В этом
случае функция
прописывается в таблице
виртуальных функций
В случае, если виртуальная
функция не участвует в
механизме полиморфизма,
она определяется
постфиксным модификатором
new