自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (5)
  • 收藏
  • 关注

原创 C++程序员应了解的那些事(49)合成析构函数和析构函数

析构函数特点:1、整个类只有一个,即不能重载;2、没有形参3、没有返回值;4、不能被继承(继承的是成员变量和成员函数,个人理解严格说这些构造函数,析构函数不能称之为“函数”,因为不符合函数定义的特征,所以构造函数,析构函数不能被继承)5、可以手动调用【合成析构函数】关于合成析构函数《c++ primer 第四版》这么说的: 编译器总会为我们合成一个析构函数即合成析构函数 按对象创建时的逆序撤销每个非static成员,因此它按成员在类中声明次序的逆序撤销成员,对于类类型的成员,合成...

2020-09-28 22:51:07 295

原创 C++程序员应了解的那些事(48)关键字 mutable ~ volatile ~ 编译器常用优化方法

(1)mutable 在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。struct ST{ int a; mutable int b;}; const ST st={1,2};st.a=11;//编译错误st.b=22;//允许 mutable在类中只能够修饰非静态数据成员...

2020-09-25 22:35:41 240

原创 C++程序员应了解的那些事(47)函数之 传入传出参数 / 默认参数

一、传入传出参数基本概念 C++ 中的参数,既可以当做传入参数,也可以当做传出参数,具体要看参数的数据类型。 ①非指针,非引用类型:一定是当做传入参数; ②指针,引用类型:既可以当做传入参数;也可以当做传出参数;甚至可以同时是传入参数,也是传出参数。 其次要看对参数进行的操作: 如果是只有读取,没有修改的,那就是传入参数,这时可以加上 const 限定符,以防不小心修改了参数。 如果只有对参数进行写入,没有读取的...

2020-09-24 21:37:55 621

原创 C++程序员应了解的那些事(46)std::endl与‘\n‘的区别

“\n” 表示内容为一个回车符的字符串。std::endl 是流操作,输出的作用和输出 “\n” 类似,但可能略有区别。 std::endl 输出一个换行符,并立即刷新缓冲区。例如:std::cout << std::endl;相当于std::cout << '\n' << std::flush;或者std::cout << '\n'; std::fflush(stdout); 由于流操作符<<的重载,...

2020-09-23 21:27:53 536 1

原创 C++程序员应了解的那些事(45)右值引用

【左值引用和右值引用】 ①C++传统的左值引用示例代码:int main(){ int a = 10; int &b = a; // 定义一个左值引用变量 b = 20; // 通过左值引用修改引用内存的值 return 0;}上面这段代码的汇编指令如下:int a = 10;// 这条mov指令把10放到a的内存中00354218 mov dword ptr [a],0Ah int &b = a;/* 下面的lea指令把...

2020-09-22 23:31:14 283

原创 C++程序员应了解的那些事(44)C++11 新特性之 any_of, none_of,all_of

(1)any_of函数说明:any_of(开始,结束,条件函数(fn)):用法:在[开始,结束)这个区间,判断是否有一个元素满足fn;<any_of 示例>#include <iostream> // std::cout#include <algorithm> // std::any_of#include <array> // std::array int main () { std::ar...

2020-09-21 21:41:27 1528

原创 程序员应了解的那些事(43) 递归与迭代

“递归”和“迭代”的区别如下:1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调用自己。一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。2、迭代:利用变量的原值推算出变量的一个新值。如果递归是自己调用自己的话,迭代就是A不停的调用B。3、递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭代的不用递归,递归调用函数,浪费空间

2020-09-21 21:21:48 185

原创 C++程序员应了解的那些事(42)友元之: 友元函数 ~ 友元成员函数 ~ 友元类

友元包括友元函数、友元类:【友元函数】 个人理解为在类中声明的可以外部访问类的内部成员变量的一个函数,这个函数并不是类的成员函数,只是在类中声明,而定义在类外。换言之,某个类的友元函数的声明只能在这个类的内部,可以在private部分也可以在public部分,一般做法是将友元声明成组地放在类定义的开始或结尾处。友元函数的形式:friend <返回类型> <函数名> (<参数列表>);①一个类中的成员函数可以是另外一个类的友元函数,而且...

2020-09-20 22:28:34 237

原创 C++程序员应了解的那些事(41)拷贝构造函数 与 赋值构造函数

【1. 何时调用复制构造函数】 复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下: class_name(constclass_name&); 它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如下: String(constString&); 新建一个对象并将其初始化为同类现有对象时,复制构造...

2020-09-19 22:11:09 330

原创 C++程序员应了解的那些事(40)子类型关系 ≠ 子类

子类型关系定义:有一个特定的类型S,当且仅当它提供类型T的行为时,称类型S是类型T的子类型。公有继承方式可以实现子类型关系,即派生类S是基类T的子类型。公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。子类型关系使得在需要基类对象的任何地方都可以使用公有派生类的对象来替代,从而可以使用相同的函数统一处理基类对象和公有派生类对象(形参为基类对象时,实参可以是派生类对象),大大提高了程序的效率。子类型关系是实现多态性的重要基础之一。示例:class base{public

2020-09-19 21:52:03 778

原创 C++程序员应了解的那些事(39)- extern “C”

VS编译的时候,可以指定编译为C代码或者C++代码。而当你新建一个cpp文件时,VS很有可能自动会把编译方式由C变成C++编译。然而,C和C++编译出来的符号的定义是不一样的(因为C++会有重载),所以可能出现:用C++编译出来的目标文件,在调用C编译出来的目标文件里面的函数时,找不到符号。那么为了实现C++语言调用C语言库,那么应该在C语言库的头文件.h里面,加入extern "C"的声明,使得就算.h文件被C++文件包含时,仍然能够以C语言的命名方式编译.h文件。另外,由于extern...

2020-09-17 22:25:38 239

原创 C++程序员应了解的那些事(38)substr()函数用法详解

substr()是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。定义:substr()是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果 没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。语法:substr(size_type _Off = 0...

2020-09-17 21:26:57 249

原创 C++程序员应了解的那些事(37续)C++11并发编程-条件变量(condition_variable)

<并发编程实例代码>#include <iostream>#include <chrono>#include <thread>#include <mutex>#include <condition_variable>const size_t maxThreads = 10;static int runcount = 0;static int sum = 0;std::condition_variable co.

2020-09-15 22:29:34 388 1

原创 C++程序员应了解的那些事(37)thread(线程) - mutex(互斥锁) - condition_variable (条件变量)导入

※线程启动的格式:#include <thread> //包含头文件void fucntion(); //定义一个线程执行的函数thread t1(fucntion); //线程启动这个函数//一创建就自动运行,主线程非阻塞void factorial(int n, char b, ..); //带参数的函数,参数的个数顺延thread t2(factorial, 5, 'a', ..); //线程启动带参数的函数t1.join(); ...

2020-09-13 11:03:00 306

原创 c语言strcpy()函数 会拷贝’\0’结束符

c语言strcpy()用法strcpy,即string copy(字符串复制)的缩写。strcpy是一种C语言的标准库函数,strcpy把从src地址开始且含有’\0’结束符的字符串复制到以dest开始的地址空间,返回值的类型为char*。//C语言标准库函数strcpy的一种最简实现//返回值:目标串的地址//对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL//参数:des为目标字符串,source为原字符串 char* strcpy(char* d

2020-09-13 10:31:44 12855

原创 C++程序员应了解的那些事(36)Effective STL第6条:当心C++编译器中最烦人的分析机制 --- 调用构造函数被误认为是函数声明的问题

C++是较为底层的面相对象语言,在底层的语法规则分析中,有很多隐藏的分析机制。(1)C++中的普遍规律,即尽可能地解释为函数声明。(2)把形式参数的声明用括号括起来是非法的,但给函数参数加上括号却是合法的,所以通过增加一对括号,我们强迫编译器按我们的方式来工作。<演示说明①>假设我们有一个存放整型(int)的文件,你想把这些整数拷贝到一个list中,那么你可能会使用下面的做法:std::ifstream dataFile("ints.dat");//使用list的区间构造函数来初

2020-09-12 23:17:44 706

原创 C++程序员应了解的那些事(35)size_type、size_t、different_type以及ptrdiff_t

【size_type】 在标准库string类型中,最容易令人产生误解就是size()成员函数的返回值了,如果不深入分析的话,大多人都会认为size()的返回值为int类型,其实不然,事实上size操作返回的是string::size_type类型的值。那怎样理解size_type这一类型呢,我引用《C++Primer》一段原文简单解释一下: string类型和许多其他库类型都定义了一些配套类型(companiontype)。通过这些配套类型,库类型的使用就能和机器...

2020-09-11 22:48:50 1476

原创 C++程序员应了解的那些事(34)remove_if(begin,end,op)

参数说明:remove_if(begin,end,op); 前两个参数是迭代器,表示迭代的起始位置和停止位置;最后一个参数:传入一个回调函数,如果回调函数返回为真,则将当前所指向的参数移到尾部。※返回值是被移动区域的首个元素※ remove_if在头文件algorithm中,故要使用此函数,需添加#include<algorithm> 由于remove_if函数的参数是迭代器,通过迭代器无法得到容器本身,而要删除容器内的元素必须通过容器的成员函数...

2020-09-11 22:38:57 299

原创 C++程序员应了解的那些事(33) rand()随机数和mt19937随机数(高质量随机数)

【导入】 C++的rand()函数产生的随机数范围值是0~32767,如果想产生很大的随机数(几亿,甚至几十亿),就要用到mt19937。【rand()随机数】范围:0~32767 头文件:#include <random>#include <iostream>#include <ctime>using namespace std;int main(){ srand(unsigned(time(0))); int c...

2020-09-11 22:21:59 1171 1

原创 C++程序员应了解的那些事(32)STL 源码剖析-算法stl_numeric.h

<1>accumulate描述:计算 init 和 [first, last) 内所有元素的总和源码://version1-普通操作版本template <class InputIterator, class T>T accumulate(InputIterator first, InputIterator last, T init) { for ( ; first != last; ++first) init = init + *first; re.

2020-09-10 22:27:46 168

原创 C++程序员应了解的那些事(31)关于string::npos的用法

【一】关于npos的定义//basic_string.hstatic const size_type npos = static_cast<size_type>(-1);//basic_string.tcctemplate<typename _CharT, typename _Traits, typename _Alloc> const typename basic_string<_CharT, _Traits, _Alloc>::size_type

2020-09-09 22:56:37 352

原创 教你在3GPP官网下载协议

1、打开3GPP网址:http://www.3gpp.org/2、打开Specification-Specification Numbering如下图,去找到你要找的协议号(以38.331为例)3、点击38 series后如下图:4、点击 TS38.331,进入下图:5、点击CR,最后就可以找到协议的下载链接了。...

2020-09-09 22:01:21 12032

原创 C++程序员应了解的那些事(30)C++11 之emplace_back 与 push_back的区别

c++开发中我们会经常用到插入操作对stl的各种容器进行操作,比如vector,map,set等。在引入右值引用,转移构造函数,转移复制运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)时,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放,这样造成的问题就是临时变量申请资源的浪费。 引入了右值引用,转移构造函数后,push_back()右值时就会调用构造函数和转移构造函数。如果可以在插入的时候...

2020-09-07 22:00:17 176

原创 GCC 内嵌汇编语法详解+visual studio code实操

开发Arm程序的时候,大多数时候使用C/C++语言就可以了,但汇编语言在某些情况下能够实现一些C语言无法实现的功能,这时候就要调用一些汇编语言的程序.我们需要大概了解一下在C语言中如何嵌入汇编语言。《1》内嵌汇编语法如下: __asm__(汇编语句模板: 输出部分: 输入部分: 破坏描述部分)共四个部分:汇编语句模板,输出部分,输入部分,破坏描述部分,各部分使用“:”格开,汇编语句模板必不可少,其他三部分可选,如果使用了后面的部分,而前面部分为空,也需要用“:”格开...

2020-09-06 09:50:17 2900 1

原创 linux盘符错乱问题解决

UUID(Universally Unique IDentifiers),全球唯一标示符.它是一个标识系统中的存储设备的字符串,使其确定系统中的所有存储设备。 为什么要使用UUID,因为系统自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序.相同的名称可能代表不同的硬盘分区.如果每个分区有一个唯一的UUID值,尤其是在grub中的kernel设置,这样就不会发生分区识别混乱的问题。...

2020-09-04 22:26:10 1207

原创 如何在C语言中嵌入汇编

C语言怎样嵌入汇编:TIPS:在编译过程汇中,汇编代码块是原封不动地送到汇编语言编译阶段的。一、为什么会用到汇编?1.为了提高速度和效率。不过这种情况很少了,现在C/C++编译器的优化很厉害了。2.为了实现某些C语言中不具备、但为不同的机器所特有的功能。这是主要原因。3.为了利用通用的汇编语言例程。也常会遇到。二、何时使用汇编?第一种情况是,绝对没有其他方法可以使用。第二种情况出现在某个C语言程序的执行时间必须减少的时候。三、如何嵌入汇编?【Turbo C】:1.使用预处理程序的伪指令#a.

2020-09-03 22:19:40 6834 1

预加重与去加重.doc

预加重(Pre-emphasis):发送端对输入信号高频分量的提升。 去加重(De-emphasis) :解调后对高频分量的压低。

2020-07-12

XX厂宽带集群解决方案.pdf

行业专网技术的发展  随着对应急抢险的及时性和准确性要求越来越高, 对指挥决策系统来说,迫切需要包括视频、语 音、数据等多媒体并发通信手段,做到决策正确,指挥高效。  应急系统宽带化、多媒体化的需求越来越强烈,将成为下一代宽带应急系统的发展方向。

2020-07-12

实验室硬件设计开发导入.pptx

实验室硬件平台概述 PCB基础概念 Altium Designer 软件使用基础 板子组成结构与功能介绍 电路板调试基本思路与方法 焊接台规则

2020-07-12

数字滤波器,数字滤波器原理是什么.docx

在信号处理领域中,对于信号处理的实时性、快速性的要求越来越高。而在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器。其中数字滤波器具有稳定性高、精度高、设计灵活、实现方便等许多突出的优点,避免了模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题,因而随着数字技术的发展,用数字技术实现滤波器的功能越来越受到人们的注意和广泛的应用。

2020-07-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除