栏目: C++

Boost智能指针—Weak_Ptr

循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下:#include#include#include#includeclassparent;classchildren;typedefboost::shared_ptrparent_ptr...

2021-06-30 28 0 0 阅读全文

C++中智能指针的设计和使用

智能指针(smartpointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(referencecount)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次...

2021-06-30 25 0 0 阅读全文

C/C++使用C语言实现多态

1.多态的概念1.1什么是多态?多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。简单的说:就是”一个接口多种实现“。1.2为什么要用多态呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。而多态除了代码的复用性外,还可以...

2021-08-19 34 0 0 阅读全文

Std::Shared_Ptr 和 Std::Weak_Ptr的用法以及引用计数的循环引用问题

在std::shared_ptr被引入之前,C++标准库中实现的用于管理资源的智能指针只有std::auto_ptr一个而已。std::auto_ptr的作用非常有限,因为它存在被管理资源的所有权转移问题。这导致多个std::auto_ptr类型的局部变量不能共享同一个资源,这个问题是非常严重的哦。...

2021-06-30 37 0 0 阅读全文

C++ 类的友元机制解读

下面给出C++类的友元机制说明(对类private、protected成员访问),需要注意的是,友元机制尽量不用或者少用,虽然它会提供某种程度的效率,但会带来数据安全性的问题。类的友元友元是C++提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模...

2021-03-27 29 0 0 阅读全文

C++实现LinkBlockedQueue的问题

c++链表实现的阻塞队列最近从java源码里发现了阻塞队列的实现,觉得非常有趣。首先,介绍下什么是阻塞队列。阻塞队列代表着一个队列可以线程安全的往该队列中写数据和从该队列中读数据。也就是说,我们可以在多个线程之间并发的进行写数据和读数据,而不会引发任何并发问题。下面我们就说说如何实现一个阻塞队列。而...

2021-04-24 34 0 0 阅读全文

详解C++ 共享数据保护机制

下面随笔说明C++共享数据保护机制。共享数据的保护对于既需要共享、又需要防止改变的数据应该声明为常类型(用const进行修饰)。对于不改变对象状态的成员函数应该声明为常函数。(1)常类型①常对象:必须进行初始化,不能被更新。const类名对象名②常成员用const进行修饰的类成员:常数据成员和常函数...

2021-03-27 34 0 0 阅读全文

C++11智能指针Unique_Ptr用法使用场景分析

一、概述C++标准模板库STL(StandardTemplateLibrary)一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr和weak_ptr,其中auto_ptr是C++98提出的,C++11已将其摒弃,并提出了unique_ptr替代auto_ptr...

2021-08-07 47 0 0 阅读全文

第10篇-初始化模板表

在第9篇-字节码指令的定义我们介绍了字节码指令并且将字节码指令相关的信息都存储到了相关数组中,只需要通过Opcode就可从相关数组中获取对应的信息。在init_globals()函数中调用bytecodes_init()函数初始化好字节码指令后会调用interpreter_init()函数初始化解释...

2021-09-14 9 0 0 阅读全文

C++实现打地鼠游戏设计

本文实例为大家分享了C++实现打地鼠游戏的具体代码,供大家参考,具体内容如下代码:#includeclassCMyWnd:publicCFrameWnd{private:CDC*m_pmdc;CBitmap*m_pbitmap[5];CRectmyRect[6];CStringpicPath[5];...

2021-04-06 37 0 0 阅读全文

Unity实现物体运动轨迹的绘制

unity物体运动轨迹绘制①createempty,命名为LineRender②在Assects中新建材质,选择Shader为Sprites/Default,并设置轨迹颜色,如下图:③选择①中创建的object,添加LineRender属性,然后将②中新建的材质赋给该object,如下图:展开Lin...

2021-09-14 7 0 0 阅读全文

C++实现高校人员信息管理系统

高校人员信息管理系统设计一、问题描述及功能要求1、问题描述某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。2、功能要求...

2021-06-21 18 0 0 阅读全文

C++中的继承关系

1什么是继承面向对象的继承关系指类之间的父子关系。用类图表示如下:2为什么要有继承?/继承的意义?因为继承是面向对象中代码复用的一种手段。通过继承,可以获取父类的所有功能,也可以在子类中重写父类已有的功能以及添加父类中没有的功能。3 如何理解子类是特殊的父类?因为子类不仅继承了父类所有的属性与行为,...

2021-07-20 34 0 0 阅读全文

C++浮点型的存储方式详解

浮点型及其存储方式有些时候需要变量能存储带小数点的数,或者能存储极大数或极小数。这类数可以用浮点(因小数点是“浮动的”而得名)格式进行存储。C语言提供了3种浮点类型,对应三种不同的浮点格式。当精度要求不严格时(小数点后少于六位),float类型是很适合的类型。double提供更高的精度,对绝大多数程...

2021-09-14 8 0 0 阅读全文

C++中唯一三元运算符?:实例详解

C++三元运算符?:C++有3种运算符:算数运算符、关系运算符和逻辑运算符。运算符在计算机中的执行顺序运算符用来构成表达式并指示计算机执行计算,其基本特性就是优先级和结合律。在没有使用小括号确定一个复合表达式中个运算符的计算顺序的情况下,编译器将使用它们的优先级和结合律老确定计算顺序,优先级越高的运...

2021-03-20 45 0 0 阅读全文

Unity2D实现游戏回旋镖

Unity2D游戏实现回旋镖以下我举出2种同使用情况的回旋镖那么回旋镖需要怎么做呢?任务清单如下回旋镖会自我旋转回旋镖达到一定距离会飞回来回旋镖对敌人造成伤害回旋镖会飞回玩家手里带着这些任务我们来依次实现这两种情况的回旋镖吧1在2D平面游戏上的回旋镖实现一个丢出回旋镖后,会缓慢减速,然后再直接收回手...

2021-09-14 10 0 0 阅读全文

Unity ScrollRect实现轨迹滑动效果

以下内容是根据Unity2020.1.01f版本进行编写的1、目的工作中遇到有需要实现轨迹滑动的滑动列表,通常的做法是计算贝塞尔曲线得出轨迹,但是我觉得计算贝塞尔曲线太麻烦了,或许有没有更简单的方法。2、思考轨迹滑动可以分两种情况:第一种是轨迹滑动是比较简单的横向(或纵向)滑动,其中轨迹不会蜿蜒盘旋...

2021-09-14 11 0 0 阅读全文

C++实现BCD码和ASCII码互转

#include#include#includeusingnamespacestd;stringASCII2BCD(conststring&str){stringres;size_tnBegin=0;intnTemp;charszBuf[16]={0};if(str.size()%2!=0)...

2021-06-23 26 0 0 阅读全文

使用C/C++开发个人记账系统

昨天朋友委托我做一个基于C++的课程小设计,题目如下:设计一个简单的个人收支管理系统,至少包括如下功能:1、逐笔输入个人收入或支出的明细,写入到文件保存,可不断进行输入和追加。输入的明细数据包括:收支明细类别编码、发生日期、金额、备注。1)为了简化用户的输入,类别编码由字母和数字构成:“a”表示收入...

2021-06-23 21 0 0 阅读全文

C/C++宏替换实现详解

基本形式#definenamereplacement_text通常情况下,#define指令占一行,替换文本是define指令行尾部的所有剩余部分,但也可以把一个较长的宏定义分成若干行,这时需要在待续的行末尾加上一个反斜杠符``。宏定义也可以带参数,这样可以对不同的宏调用使用不同的替换文本。例:#d...

2021-04-09 20 0 0 阅读全文