
C++
C++学习之路
Data菌
这个作者很懒,什么都没留下…
展开
-
C++制作Android版so库给Unity使用
上篇介绍Windows版dll文件制作与在Unity中调用,本篇介绍Android版so文件制作以及在Unity项目中使用。生成so库文件,需要借助NDK工具,并且需要配置环境变量。配置可参考https://www.jianshu.com/p/c3e1fe6f61c4NDK配置完成后,先讲解so文件制作的整个过程。1)测试脚本文件创建:头文件MathDll.h【注意】if 0#if 0# define _DLLExport __declspec (dllexport) //定义该函.原创 2021-08-09 15:29:09 · 2017 阅读 · 0 评论 -
C++制作Windows版动态链接库dll文件给Unity使用
前面系列文章讲解C++语言的语法及API的使用。本篇文章介绍如何制作dll文件给Unity项目使用。先介绍制作dll文件的过程:1)创建动态链接库C++工程项目2)删除模板工程脚本文件3)创建测试脚本文件创建头文件MathDll.h#if 1# define _DLLExport __declspec (dllexport) //定义该函数的dll# else # define _DLLExport __declspec (dllimport) /...原创 2021-08-09 11:04:02 · 622 阅读 · 0 评论 -
C++多线程
基于进程的多任务处理,就是2个以上的程序同时运行;基于线程的多任务处理,就是程序内的2个以上的代码片段同时执行,本篇简单介绍C++关于多线程使用。/** Author:W;* 多线程* 1.基于进程的多任务处理,就是2个以上的程序同时运行;* 2.基于线程的多任务处理,就是程序内的2个以上的代码片段同时执行。*///引入标准输入输出流#include <iostream>using namespace std;#include <thread>//测原创 2021-08-06 16:25:39 · 190 阅读 · 0 评论 -
C++预处理指令
预处理器:一些指令,指示编译器在实际编译之前所需完成的工作。以井号(#)开头,但不以分号结尾。1.#include : 把头文件包含到源文件中。2.#define : 通常用于创建符号常量。该符号常量通常称为宏。3.其他如 #if、#else等/** Author:W;* 预处理器:一些指令,指示编译器在实际编译之前所需完成的工作。以井号(#)开头,但不以分号结尾。* 1.#include : 把头文件包含到源文件中。* 2.#define : 通常用于创建符号常量。该符号常量通常原创 2021-08-06 14:40:15 · 251 阅读 · 0 评论 -
C++模板-泛型函数与泛型类
泛型,在调用函数或使用该类时才指定特定的类型,可以避免重复写类似功能代码。那C++语言如何定义泛型呢?/** Author:W;* 泛型-模板:只有在调用或使用该函数或类时,才确定类型* 1.泛型函数* 2.泛型类*///引入标准输入输出流#include <iostream>using namespace std;#include <vector>/*泛型函数*/template <typename T> T Max(T a, T b)原创 2021-08-06 11:37:50 · 963 阅读 · 0 评论 -
C++内存的手动分配与释放
C++的内存管理,相对于高级语言Java、C#等有自己的GC回收机制而言,C++是需要程序员更主动来管理内存。查资料说C++的内存管理,有很多种:手动、RAII释放、scope_guard/defer释放技术、Boehm GC库等。一个好的C++资源管理策略,对您的游戏性能影响是非常大的。本篇主要介绍手动分配与释放内存案例。new与delete运算符地运用。/** Author:W;* 内存手动管理* 1.内存分配:new 运算符,为给定类型的变量在运行时分配堆内的内存,并返回所分配的空间地原创 2021-08-05 21:07:17 · 3502 阅读 · 0 评论 -
C++命名空间
命名空间:区分不同库中相同名称的函数、类、变量等。以达到准确定位调用到目标函数、类或变量。/** Author:W;* 命名空间:区分不同库中相同名称的函数、类、变量等。以达到准确定位调用到目标函数、类或变量。*///引入标准输入输出流#include <iostream>using namespace std;/*非嵌套命名空间*/namespace space1{ int a = 5;}namespace space2{ int a = 7;}/*原创 2021-08-05 19:15:03 · 147 阅读 · 0 评论 -
C++异常处理
本篇介绍C++的异常处理机制。代码执行难免不会出现错误,出现错误,可能会导致程序崩溃。为了让程序出现异常情况,不至于中断崩溃,能够继续执行。可以针对这段执行逻辑代码加入异常处理代码。/** Author:W;* 异常处理* 1.try语句块:包含被保护检查的运行代码* 2.throw:特定异常抛出* 3.catch:异常捕获处理AC*///引入标准输入输出流#include <iostream>using namespace std;//取商float Divis原创 2021-08-05 10:07:31 · 162 阅读 · 0 评论 -
C++文件读写
本篇介绍C++语言的文件读写操作。文件操作库 #include <fstream>1)ofstream:该数据类型表示输出文件流,用于创建文件并向文件写入信息。2)ifstream:该数据类型表示输入文件流,用于从文件读取信息。3)fstream:该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。文件打开模式:1)ios::app 追加模式。所有写入都追加到文件末尾。2)ios::原创 2021-08-04 20:33:19 · 1886 阅读 · 0 评论 -
C++类的4大特性
面向对象编程,无疑我们需要比较深刻地了解认识4大特性:抽象、封装、继承、多态。1.抽象:是一种仅向用户暴露接口而把具体的实现细节隐藏起来的机制。是一种依赖于接口和实现分离的编程(设计)技术。C++ 类为数据抽象提供了可能。它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实现。2.封装:是一种把数据和操作数据的函数捆绑在一起的机制。C++ 通过创建类来支持封装和数据隐藏(public、protected、private)。上述抽象和封装特性,实质是在不同层级面描原创 2021-08-04 18:13:52 · 2823 阅读 · 0 评论 -
C++类的多态:虚函数
本篇介绍C++类的多态性,当类之间存在继承关系时,调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。/** Author:W;* 类的多态:virtual虚函数:调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。*///引入头文件:头文件包含了程序中必需的或有用的信息#include <iostream>using namespace std;/*基类:形状*/class Shape{public: //构造函数 Shape(float wi原创 2021-08-04 15:54:54 · 301 阅读 · 0 评论 -
C++函数与运算符重载模板
本篇介绍C++语言中如何重载函数和运算符。1.重载函数:在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。2.重载运算符:带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。/** Author:W;* 函数和运算符的重载* 1.重载函数:在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。* 2.重载运算符:带有特殊名称原创 2021-08-04 15:03:08 · 965 阅读 · 0 评论 -
C++类的继承
本篇介绍C++的类的继承特性。1.派生类不能继承基类的构造函数、析构函数和拷贝构造函数;基类的重载运算符;基类的友元函数。2.继承类型:几乎不使用 protected 或 private 继承,通常使用 public 继承。1)公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。2)保护继承(protected): 当一个类派生自保护基类时,原创 2021-08-04 11:33:32 · 600 阅读 · 0 评论 -
C++类的定义模板
C++是在C语言基础上发展而来的,但引入了面向对象编程的特性,因而有了“类”的特性。本篇介绍C++的类如何定义。/** Author:W;* 类* 1.类的属性* 2.类的函数* 1)构造函数:默认、带参以及拷贝* 2)析构函数:类的对象销毁时执行;* 3)普通函数:* 4)友元函数:不是类的成员函数,定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。* 5)内联函数:牺牲空间换取访问效率* 3.静态成员:* 1)静态属性:不能把静态成员原创 2021-08-04 10:30:23 · 587 阅读 · 0 评论 -
C++函数
本篇介绍C++函数,主要介绍函数的定义、函数形参传递方式以及匿名函数。/** Author:W;* 函数* 1.定义声明* 2.函数参数3种传递方式:值、引用以及指针* 3.匿名函数Lamda表达式*///引入头文件:头文件包含了程序中必需的或有用的信息#include <iostream>using namespace std;//函数声明void methodByValue(int v);void methodByPointer(int* p);void原创 2021-08-03 17:22:43 · 165 阅读 · 0 评论 -
C++结构体
本篇介绍C++的一个数据结构:结构体类型,主要介绍它的定义声明、以及作为函数参数传递的方式。/** Author:W;* 结构体*///引入头文件:头文件包含了程序中必需的或有用的信息#include <iostream>using namespace std;/// <summary>/// 图片/// </summary>struct Picture{ string Name; int ID;};//函数声明void Pr原创 2021-08-03 15:49:40 · 678 阅读 · 0 评论 -
C++输入输出流
本篇介绍输入输出流函数:cin/cout/cerr/clog等。/** Author:W;* 输入输出流*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>using namespace std;//main程序执行入口函数int main(){ char name[50]; //输出流 cout << "请输入您的名字:" << endl; //输入流 cin >&g原创 2021-08-03 15:18:50 · 134 阅读 · 0 评论 -
C++时间计算
本篇介绍一些关于C++语言的时间计算的函数如时间戳、当前时间、当前本地时间、时区时间、时间差以及时间的字符串字符串格式化等。/** Author:W;* 时间函数*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//引入时间函数库#include <time.h>#include <Windows.h>//命名空间使用using namespace std;//伦敦时时区#defi原创 2021-08-03 14:47:56 · 4502 阅读 · 0 评论 -
C++变量引用
本篇介绍的变量引用与之前介绍的指针不是同一概念,它们有本质的区分:1)不存在空引用。引用必须连接到一块合法的内存。2)一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。3)引用必须在创建时被初始化。指针可以在任何时间被初始化。下面代码介绍其应用场景,供参考/** Author:W;* 变量引用:是已定义声明的变量的“别名”* 引用与指针的区别:* 1)不存在空引用。引用必须连接到一块合法的内存。* 2)一旦引用被初始化为一个对象,就不能原创 2021-08-02 20:51:17 · 1549 阅读 · 1 评论 -
C++指针
本篇介绍有关指针的知识。它是存储变量内存地址值的“变量”,一个十六进制的数。指针变量定义声明如下:int num = 9; int *ip = &num;int是指向变量num的数据类型;*p是指针变量;&num是获取变量num的内存地址。下面脚本代码中列举测试了指针的应用场景供参考。/** Author:W;* 指针* 1.变量的内存地址=(&)连字号+变量名;* 2.指针:存储该变量内存地址值的“变量”;* 【注意1】指针的值类型都是一样的,都是一个代表内存地..原创 2021-08-02 20:01:40 · 142 阅读 · 0 评论 -
C++字符串定义与操作
本篇介绍字符串的定义和常见操作:复制、连接、长度、大小、首字母定位等。/** Author:W;* 字符串定义与操作* 1.C语言风格的字符串* 2.C++语言风格的字符串*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char#include <cstring>//引入s原创 2021-08-02 15:57:23 · 2984 阅读 · 0 评论 -
C++数组
本篇介绍C++的数组,有一维数组和多维数组。下面举例说明使用。/** Author:W;* 数组*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//命名空间使用using namespace std;//main程序执行入口函数int main(){ cout << "===一维数组===" << endl; int array1[5] = {2,4,6,8,10}; for原创 2021-08-02 14:46:07 · 151 阅读 · 0 评论 -
C++随机数
在特定范围内产生一个随机数,是比较常见的功能。在C++语言中,先设定随机种子,然后随机。/** Author:W;* 随机数*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//引用时间函数库#include <ctime>//引用标准函数库文件#include <cstdlib>//命名空间使用using namespace std;//main程序执行入口函数int mai原创 2021-08-02 11:47:15 · 398 阅读 · 0 评论 -
C++常用的数学运算
本篇介绍C++语言中一些常用的数学运算API,这是系统自己封装好的。/** Author:W;* 常用的数学运算*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//引入数学计算库文件#include <cmath>//命名空间使用using namespace std;//main程序执行入口函数int main(){ double angle = 235.55f; double v1原创 2021-08-02 11:20:56 · 1286 阅读 · 0 评论 -
C++判断
本篇介绍C++判断语句,与C# Java基本无异。下面举例说明/** Author:W;* 判断* 1.if..else* 2.switch*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//命名空间使用using namespace std;//main程序执行入口函数int main(){ //if..else语句 cout << "===if..else语句===" <<原创 2021-08-02 10:27:56 · 429 阅读 · 0 评论 -
C++循环
本篇介绍C++语言的循环,与C#的基本无异。/** Author:W;* 循环* 1.while* 2.for* 3.do..while*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//命名空间使用using namespace std;//main程序执行入口函数int main(){ //while循环 cout << "===while循环===" << endl原创 2021-08-02 10:00:15 · 280 阅读 · 0 评论 -
C++运算符
本篇介绍C++语言的运算符:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符。/** Author:W;* 运算符* 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//命名空间使用using namespace std;//main程序执行入口函数int main(){ int a = 100; int b = 24; int c.原创 2021-08-01 16:55:36 · 206 阅读 · 0 评论 -
C++关键字extern
本篇介绍C++语言中关键字extern。实现使多个脚本文件共享使用在某个脚本文件中已经定义声明的变量和函数。ExternTest.cpp脚本文件/** Author:W* 关于extern关键字作用测试类*///引入头文件:头文件包含了程序中必需的或有用的信息#include <iostream>//命名空间使用using namespace std;//变量定义声明int v1 = 5;//函数定义声明void method(){ cout <&l原创 2021-07-30 21:01:19 · 202 阅读 · 0 评论 -
C++关键字 static
本篇介绍C++语言中关键字static的作用,与高级语言C#、Java语言中的static功能类似,就是类的所有实例共享。/** 【多行注释】* Author:W;* 存储类:static* 与C#、Java高级语言的static作用类似,当 static 用在类数据成员上时,会导致仅有一个该成员的副本被类的所有对象共享。* 1.【静态全局变量】修饰全局变量时,会使变量的作用域限制在声明它的文件内。* 2.【静态局部变量】修饰局部变量时,可以在函数调用之间保持局部变量的值。* 3.【静态原创 2021-07-30 20:32:29 · 168 阅读 · 0 评论 -
C++变量:基本数据类型、作用域以及常量
本篇文章介绍C++语言变量和常量声明、定义和使用,它们的基本数据类型以及作用域(全局、局部)等。/** 【多行注释】* Author:W;* 1.变量:基本类型及作用域* 2.常量*///引入头文件:头文件包含了程序中必需的或有用的信息【单行注释】#include <iostream>//命名空间使用using namespace std;/** 全局变量【系统会自动初始化】*/bool isOk;//布尔类型char c = 'c';//字符型strin原创 2021-07-30 18:36:51 · 248 阅读 · 0 评论 -
C++简介与开发环境搭建
C++语言,对于做一个Unity前端的我来说,这么些年来在公司用它来编写游戏功能还是很少的。但是有时候会引用一些C++实现的插件工具。另外,据了解Unity引擎大部分也是使用C++语言编写实现的。那为什么要用C++呢?这跟C++语言的特性有关:它是C语言(“低级语言”)基础上扩展完善发展而来的,因此支持过程化编程;但又有类的特性,像C#、Java语言等(“高级语言”),因此也支持面向对象编程。它是综合了高级语言和低级语言特点的(“中间语言”)。C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的原创 2021-07-30 16:17:49 · 1418 阅读 · 7 评论