编程语言杂记
文章平均质量分 79
KyleWlk
这个作者很懒,什么都没留下…
展开
-
C++ 智能指针
控制块通过继承实现,内部使用了虚函数,shared_ptr内部存储的是基类的指针,与实际的控制块类型无关。如果基类和派生类都继承了enable_shared_from_this会导致shared_ptr识别类型失败,而无法使用shared_from_this。strong_ref是shared_ptr的引用计数,当前strong_ref变为0时会调用对象的析构函数,但不一定会释放对象的内存,weak_ref是weak_ptr的引用计数,当shared_ptr和weak_ref都为0时则会释放控制块的内存。原创 2024-03-14 20:59:19 · 1069 阅读 · 0 评论 -
C++ 构造函数、析构函数调用虚函数
C++虚函数是通过虚表实现的,虚函数的地址记录在需表中,只对象完成构造完成后,虚函数的地址才最终确定。基类先于派生类构造,所以构造时没法调用到派生类的虚函数,也就是说只能调用到自己,也就是虚函数失去多态功能。派生类先于基类析构,所以析构时基类没法调用到派生类的虚函数,同样只能调用到自己,虚函数也失去多态功能。运行结果:在构造函数函数或者析构函数中调用虚函数,通常IDE会有警告,为了消除警告可以通过域名符号调用虚函数,此时相当于直接指定函数地址,不需要通过虚表所以不会有警告。原创 2023-08-30 22:04:41 · 614 阅读 · 0 评论 -
CMake Find_Package和Install
CMake Find_Package和Install原创 2023-01-23 17:03:39 · 949 阅读 · 0 评论 -
MSVC C++ UTF-8编程
Window上MVC使用UTF-8编码原创 2022-12-18 17:45:19 · 4577 阅读 · 0 评论 -
CMake之MSVC警告
CMake禁用VS警告原创 2022-12-18 17:24:56 · 675 阅读 · 0 评论 -
Lua 任意类型的get/set方法
Lua任意类型的get/set方法对于lua与C程序相互调用时,如果有一个数字需要在C程序和lua脚本同时使用,这时就需要保持lua程序与C程序中的数字变量一致,及当C程序改变了这个数字变量时lua能够获取改变后的变量,当lua程序改变了变量时C程序也可以获取改变后的值。实现这个功能可以给lua变量设置get/set方法。当lua中读取数字变量的值时,则调用对应得get方法,get方法中可原创 2017-11-16 22:31:04 · 11002 阅读 · 0 评论 -
ToLua原理和使用教程
ToLua原理和使用教程Tolua是用来实现C++程序中的类、变量、函数等绑定到lua程序中。绑定后lua代码可以直接调用C++程序中的类、变量、函数等等。 Tolua原理Tolua做了哪些事要想知道tolua原理,先了解tolua到底做了些什么事。先看一下下面“lua实现get/set方法”的例子。这个例子包含了三个文件luaBind.cpp文件、Main.cpp文件、a.l原创 2017-12-11 20:54:58 · 20571 阅读 · 0 评论 -
Lua for循环
Lua for循环 累加模式for var = exp1, exp2, exp3 do ……endexp1初始值exp2最大值exp3步长 例如for i=1,5,2 do print(i*10)end结果: 迭代器泛型模式forfor in do原创 2017-02-13 09:31:59 · 779 阅读 · 0 评论 -
C++11 foreach与std::begin、std::end
C++11 foreach与std::begin、std::end for遍历元素C++11增加了一个行特性foreach(Range-based for loops ,基于范围的for循环)。可以对集合、数组、初始化列逐个访问。for ( range_declaration : range_expression) loop_statement //编原创 2017-01-22 14:51:47 · 21146 阅读 · 0 评论 -
C++11 右值引用和左值引用详解
C++11引用LValue/RValueReference引用Reference引用的声明:T &ref = object ;T & ref ( object ) ; T && ref = object ;T && ref ( object ) ; 引用声明时必须赋值 引用的有点类似于这种const...原创 2017-03-27 00:26:27 · 1470 阅读 · 0 评论 -
C++ 11 匿名函数Lambda表达式
C++ 11匿名函数Lambda表达式格式语法[ capture-list ] ( params ) mutable exception attribute -> ret { body }[ capture-list ] ( params ) -> ret {body }[ capture-list ] ( params ) { body }[ capture-...原创 2017-03-15 22:50:01 · 2746 阅读 · 0 评论 -
C++单利模式
C++单利模式1. 实现单利模式是,通常会使用一个静态指针来指向一个创建在堆上的实例,实例可以等到第一次使用时创建,因为创建在堆上所以要手动释放内存。例如:Singleton* getInstance(){ if (instance ==NULL) instance= new Singleton(); return instance原创 2017-04-30 21:28:15 · 557 阅读 · 0 评论