Объектно-ориентированное программирование на c++


Download 56.06 Kb.
bet8/8
Sana18.06.2023
Hajmi56.06 Kb.
#1592783
TuriЛекция
1   2   3   4   5   6   7   8

priority_queue::top

  • #include
  • #include
  • int main () {
  • std::priority_queue mypq;
  • mypq.push(10);
  • mypq.push(20);
  • mypq.push(15);
  • std::cout << "mypq.top() is now " << mypq.top() << '\n';
  • return 0;
  • }
  • Output:
  • mypq.top() is now 20

priority_queue::emplace

  • #include
  • #include
  • #include
  • int main () {
  • std::priority_queue mypq;
  • mypq.emplace("orange");
  • mypq.emplace("strawberry");
  • mypq.emplace("apple");
  • mypq.emplace("pear");
  • std::cout << "mypq contains:";
  • while (!mypq.empty()) {
  • std::cout << ' ' << mypq.top();
  • mypq.pop();
  • }
  • std::cout << '\n';
  • return 0;
  • }
  • Output: mypq contains: strawberry pear orange apple

priority_queue::swap

  • #include
  • #include
  • int main () {
  • std::priority_queue foo,bar;
  • foo.push (15); foo.push(30); foo.push(10);
  • bar.push (101); bar.push(202);
  • foo.swap(bar);
  • std::cout << "size of foo: " << foo.size() << '\n';
  • std::cout << "size of bar: " << bar.size() << '\n';
  • return 0;
  • }
  • Output:
  • size of foo: 2
  • size of bar: 3

Создание динамически связываемой библиотеки (DLL) на C++

  • Поскольку лекция получилась маленькая, то я решил добавить сюда еще вопрос о создании DLL, которая будет нужна в курсовой работе.
  • Запускаем Visual Studio и создаём проект библиотеки DLL, назовём его myDLL. Там сразу есть файл myDLL.h, поместим в него следующий код:
  • #ifdef MYDLL_EXPORTS
  • #define MYDLL_API __declspec(dllexport)
  • #else
  • #define MYDLL_API __declspec(dllimport)
  • #endif
  • class MyDLL
  • {
  • public:
  • // a * b
  • static MYDLL_API string test(int x, int y);
  • };

Теперь найдём в проекте файл myDLL.cpp и добавим туда код :

  • Теперь найдём в проекте файл myDLL.cpp и добавим туда код :
  • #include
  • #include
  • using namespace std;
  • template
  • std::string toString(T val) {
  • std::ostringstream oss;
  • oss << val;
  • return oss.str();
  • }
  • template
  • T fromString(const std::string& s) {
  • std::istringstream iss(s);
  • T res;
  • iss >> res;
  • return res;
  • }
  • string MyDLL::test(int x, int y) {
  • return toString (x * y);
  • }

Используем эту библиотеку в другом проекте.

  • Используем эту библиотеку в другом проекте.
  • В Visual Studio добавим в решение (solution) классическое приложение testMyDLL.
  • Для использования в приложении функций, созданных в библиотеке DLL, необходимо сослаться на эту библиотеку.
  • В свойствах проекта выберите Common Properties->References (добавить ссылку), добавьте ссылку на myDLL, нажав кнопку «Add New Reference…» (Добавить ссылку).

Затем, прописываем путь путь к файлу myDLL.h из соседнего проекта библиотеки DLL.

  • Затем, прописываем путь путь к файлу myDLL.h из соседнего проекта библиотеки DLL.
  • #include "..\\MyDll\MyDll.h"
  • В функцию WndProc, в отработку сообщения WM_PAINT добавляем код:
  • PAINTSTRUCT ps;
  • HDC hdc = BeginPaint(hWnd, &ps);
  • std::string s= MyDLL::test (32, 45) ;
  • TextOutA (hdc, 100, 200, s.c_str(), s.size() );
  • EndPaint(hWnd, &ps);
  • Смотрим за результатом.
  • Примечание: чтобы проект запустился, надо назначить его запускаемым (рис ниже), щелкнув правой клавишей на проекте в окне «Обозреватель решений»

Для разнообразия я добавил в класс еще нестатическую функцию-член:

  • Для разнообразия я добавил в класс еще нестатическую функцию-член:
  • string MYDLL_API str();
  • И определил ее так:
  • string MyDLL::str( ) {
  • return "проверка";
  • }
  • А вызвал так:
  • MyDLL md; // создаем автоматический объект
  • // рисуем строку
  • TextOutA(hdc, 100, 300, md.str().c_str(), md.str().size());
  • Результат показан на следующем рисунке.

Download 56.06 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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