CMakeLists.txt project(virtual) # 创建工程 virtual add_library(virtual SHARED virtual.cpp) # 创建动态连接库 libvirtual.dll add_executable(main main.cpp) # 创建运行程序 main.exe target_link_libraries(main virtual) # 让 main.exe 连接 libvirtual.dll virtual.h #pragma once…
接口处理篇accept,bind,connect,endprotoent,endservent,getsockopt,htonl,htons,inet_addr,inet_aton,inet_ntoa,listen,ntohl,ntohs,recv,recvfrom,recvmsg,send,sendmsg,sendto,setprotoent,setservent,setsockopt,shutdown,socket, accept(接受socket连线) 相关函数 socket,bind,l…
先上一个简单代码: #include <cstdlib> #include <cstdio> // native apis extern "C" { typedef void (*CallbackFunction)(int value); CallbackFunction GlobalFunction; __declspec(dllexport) void NativeSetCallback(CallbackFunction func) { GlobalFunc…
由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针类型来判断的).纯虚函数是一种在父函数中只定义而不实现的一种函数,不能用来声明对象,也可以被称为抽象类.纯虚函数的实现也可以在类声明外进行定义.C++中的抽象类abstract class是指至少有一个纯虚函数的类,如果一个类全部由纯虚函数组成,不包括任何的实现,被称为纯虚类. Java中的普通函数…
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数. 1.简介 假设我们有下面的类层次: class A { public: virtual void foo() { cout<<"A::foo() is called"<<endl; } };…
1. DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数.变量或类.这些可以直接拿来使用. 静态链接库与动态链接库的区别:   (1)静态链接库与动态链接库都是共享代码的方式.静态链接库把最后的指令都包含在最终生成的EXE文件中了:动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件.   (2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态…
概述 单测是提升软件质量的有力手段.然而,由于编程语言上的支持不力,以及一些不好的编程习惯,导致编写单测很困难. 最容易理解最容易编写的单测,莫过于独立函数的单测.所谓独立函数,就是只依赖于传入的参数,不修改任何外部状态的函数.指定输入,就能确定地输出相应的结果.运行任意次,都是一样的.在函数式编程中,有一个特别的术语:"引用透明性",也就是说,可以使用函数的返回值彻底地替代函数调用本身.独立函数常见于工具类及工具方法. 不过,现实常常没有这么美好.应用要读取外部配置,要依赖外部服务获…
  本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程?   java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的函数 看一下百度百科中关于函数的说明 函数的定义: 给定一个数集A,假设其中的元素为x. 现对A中的元素x施加对应法则f,记作f(x),得到另一数集B.假设B中的元素为y. 则y与x之间的等量关系可以用y=f(x)表示. 我们把这个关系式就叫函数关系式,简称函数. 函数概念含有三个要素:定义域A.值…
main函数表示法        很多同学在初学C或者C++时,都见过各种各样的main函数表示法: main(){/*...*/} void main(){/*...*/} int main(){/*...*/} int main(void){/*...*/} int main(int argc, char *argv[]){/*...*/} int main(int argc, char **argv){/*...*/} ......        看过这么多写法之后,不禁顿生疑惑,到底哪个…
ay = new byte[array.length]; for (int i = 0; i < array.length; i++) { transformedArray[i] = function.applyAsByte(array[i]); } return transformedArray;}1234567这里测试如何实现short数组至byte数组乘以2的转换: short[] array = {(short) 1, (short) 2, (short) 3};byte[] trans…