疫情期间上网课,奈何网课视频声音太小听不清楚,只能自己摸索,根据老师发的代码看,此次课学习的内容是动态链接库dll的载入和使用问题,涉及到的知识点有dll库载入和获取dll库中的内容、函数指针的使用(这是我自己以前缺漏的地方)、多态(也就是virtual知识点,用来在c++中实现类似接口功能的一个方式)

第一部分代码贴的是函数指针的使用:

#include<iostream>
using namespace std;
class haha
{
public:void run(){cout << "qqq";}
};haha* aaa()
{return new haha();
}
//文件名称为haha.h
//aaa是我定义的返回值为haha类的指针的函数
#include"haha.h"
#include<iostream>
using namespace std;
int main()
{haha* (*A)(); //*****划重点******A = aaa;haha* alpha=A();alpha->run();return 0;
}此代码意在初步掌握函数指针的使用,与变量指针的使用不同,函数指针的定义后面有( ),如果函数是aaa(int ss , ...)这样的形式,函数指针也应该定义为haha* (*A)(int ss , ...)

第二部分代码贴的是函数指针联合dll动态链接库访问函数的使用:

#ifndef _gameinterface_h_
#define _gameinterface_h_//GameInterface.h文件class GameInterface
{
public:virtual void run( ) = 0; //一个多态的使用
};#endif
#include <windows.h>
#include <iostream>
#include "GameInterface.h"  //一个接口类,属于父类充当接口功能
using namespace std;int main( )
{HINSTANCE Hp = LoadLibrary("ImpDll.dll"); //固定用法用于加载dll动态链接库if (Hp == NULL){      cout << "Error" << endl;return 1;}GameInterface* (*pFunc)( ); //定义一个返回值是gamerinterface*类型的函数的指针pFunc = (GameInterface* (*)())::GetProcAddress(Hp,"getGame");//GetProcAddress是一个类似HINSTANCE类型相关用途的函数,它的用途跟dll有关,目的是获取dll中 getGame函数的地址//https://www.cnblogs.com/hellscream-yi/p/7943848.html参照这篇文章理解if (pFunc == NULL){cout << "Error at calling" << endl;return 2;}GameInterface* pGame = pFunc( ); //执行从dll中加载的函数,pFunc为函数指针,返回 gameinterface的指针,这个指针有点类似于一个强制转换的意思,因为pFunc实际内容是返回一个 GameInterface类的子类的指针,通过强制转换为父类类型,重写多态函数pGame->run( );
}

如有不对,请各位指正 谢谢!

更新更新,小白学面向对象方法,研一课程,附带补充C++知识相关推荐

  1. 小白学Java Web 3 Web前端之CSS基本知识2

    这一篇接着上一篇的内容来分享,上一篇还有大量的样式属性没有列出,不过在继续分享之前,我想先来分享一下关于网页的布局相关的一些东西,因为下一篇我打算分 享用仅仅前面三小篇的内容来制作一个简单的静态网页, ...

  2. 触动精灵: 零基础小白学触动1-4

    视频地址 http://www.iqiyi.com/playlist443635102.html 零基础小白学触动 - 01 - 说在前面的废话 小知识:Tslib库的定位 是官方为了解决小白不会封装 ...

  3. 殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总(持续更新)

    殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总 殷人昆 数据结构(用面向对象方法与C++语言描述)(第二版)实现汇总 第二章 线性表 第二章 线性表 约瑟夫问题(线性表实现)约瑟 ...

  4. flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: 1. abort函数的使用 2. 自定义错误处理方法 3. 设置响应信息的方法 4. 返回json数据的方法 abort函数的使用 abor ...

  5. 【转】探讨android更新UI的几种方法----不错

    原文网址:http://www.cnblogs.com/wenjiang/p/3180324.html 作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了,因 ...

  6. 安卓更新UI的几种方法

    安卓更新UI的几种方法: 1.利用Looper更新UI界面   如果我们的代码需要随时将处理后的数据交给UI更新,那么我们想到的方法就是另开一个线程更新数据(也必须这么做,如果我们的数据更新运算量较大 ...

  7. android 国内 更新方法,手机安卓系统怎么升级 安卓系统更新升级的三种方法介绍...

    最近有网友问小编"安卓系统怎么升级?",针对该问题,笔者也在网上查找了下相关资料,不过并没有找到什么有价值的相关介绍,多数都是介绍如何自动升级.或者下载升级版包等等方法,对于一些常 ...

  8. Android子线程中更新UI的4种方法

    方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage ...

  9. php+mysqli实现批量执行插入、更新及删除数据的方法

    本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只 ...

  10. asp mysql 更新数据_Asp更新数据库的几种方法

    Asp更新数据库的几种方法 asp中插入与修改数据的几种方式.为了方便解说,我们先建立一个名为test的表,表内只有两个数据 项:username和email,分别用来存储用户名与邮箱地址. 1.利用 ...

最新文章

  1. app息屏后ajax请求不执行_息屏时钟app下载-息屏时钟软件下载v1.0 安卓版
  2. 【Eclipse中使用Git之一】把远程仓库的项目,clone到eclipse里面
  3. ITK:将两个图像相乘
  4. 交换机短路_融商通达变频器功率模块短路维修故障案例
  5. 把老赵的页面缓存片断改一下,呵呵
  6. 1. mybatis批量插入数据
  7. ReactJs 第三章 React元素的渲染
  8. php ci base url,CodeIgniter中base_url问题
  9. zabbix监控kafka模板_一篇运维老司机的大数据平台监控宝典
  10. Norton Internet Security 序列号提取(卡饭)
  11. 微信小程序自定义tabbar
  12. CMOS门电路(OD门、传输门、双向模拟开关、三态门)
  13. 爱河许云上计算机乐谱,爱河简谱(歌词)-神马乐团演唱-桃李醉春风记谱
  14. JAVA微服务架构视频教程
  15. Wave Arts Tube Saturator for Mac(实时电子管放大器插件) v1.38破解版
  16. mongodb查询后排序
  17. PMP考前冲刺2.20 | 2023新征程,一举拿证
  18. 在arm Cortex-A9开发板移植rtl8821au无线网卡并实现与外网通信
  19. 基于curl 的zabbix API调用
  20. 工作了3年的JAVA程序员应该具备什么技能?

热门文章

  1. 操作系统-存储器管理
  2. mac+nginx+php70+mysql环境搭建
  3. python装饰器(docorator)详解
  4. Codechef Black Nodes in Subgraphs(树型背包)
  5. Git之Github使用(一):Push代码到Github
  6. 004. Asp.Net Routing与MVC 之二: 请求如何激活Controller和Action
  7. 链表的游标(cursor)实现
  8. easyui 分页保存checkbox的选中状态
  9. POJ1546(进制转换)
  10. 诸事不顺--今日宜睡大觉