后端开发
C++ 标签描述

1.VS上安装Qt扩展 点击菜单栏【扩展】->【管理扩展】,在搜索框搜索“Qt”,点击下载QtVisualStudioTools,以2022版为例,需要关闭所有窗口才能执行安装 关闭VS后,弹出安装窗口,等待其安装完成 2.新建QT工程测试 等待安装完成后,添加一个QtVertion后(前提已经安装了Qt开发环境)即可使用VS新建或者编译QT项目了 以QtWidgetsApplication为例,【文件】->【新建】->【项目】,选择“QtWidgetsApplication”,填入项目名等常规信息后,点击创建,并选择一个QtVersion,一直下一步点击finish创建...

  f7ob2WOL3pZP   2024年04月12日   19   0   0 C++

C默认参数 默认参数概述 在C中,函数参数可以拥有默认值。这意味着,在调用函数时,如果省略了某个参数,那么将使用为该参数指定的默认值。 设置默认参数 默认参数值使用等号=符号进行设置,位于参数声明的类型之后。例如: voidmyFunction(stringcountry="Norway"); 在这个例子中,country是一个参数,它的默认值为"Norway"。这意味着,如果在调用myFunction时没有显式指定country参数,那么函数将使用"Norway"作为其值。 示例:使用默认参数 以下示例展示了如何使用默认参数: voidmyFunction(stringcountry="N...

  YHTQQsaAg9bB   2024年04月15日   43   0   0 C++

decltype关键字是C11新标准引入的关键字,它和关键字auto的功能类似,也可以自动推导出给定表达式的类型,但它和auto的语法有些不同,auto推导的表达式放在“=”的右边,并作为auto所定义的变量的初始值,而decltype是和表达式结合在一起,语法如下: decltype(expr)var; 它的语法像是函数调用,但它不是函数调用而是运算符,和sizeof运算符类似,在编译期间计算好,表达式expr不会被真正执行,因此不会产生汇编代码,如下的代码: intfunc(int); decltype(func()); func函数不会真正被调用,只会在编译期间获取他的类型。decl...

  9c2DmW5eOllx   2024年04月12日   44   0   0 C++

接下来我将持续更新“深度解读《深度探索C对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。 C11新标准中最重要的特性之一就是引入了支持对象移动的能力,为了支持移动的操作,新标准引入了一种新的引用类型——右值引用,右值引用一个重要的性质就是只能绑定到一个将要销毁的对象。对对象执行移动操作后要确保源对象处于可析构的状态,源对象随时可能被销毁,所以程序在之后不要再去使用源对象的值,同时也要保证源对象析构之后不会对移入对象产生副作用。移动语义的加持使得移动一个如容器之类的大对象的成本可以像复制一个指针一样低廉了,于是出现了各种各样的传言:如...

  9c2DmW5eOllx   2024年04月18日   24   0   0 C++

系统调用 系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。 从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。 系统服务之所以需要通过系统调用来提供给用户空间的根本原因是为了对系统进行“保护”,因为我们知道Linux的运行空间分为内核空间与用户空间,它们各自运行在不同的级...

  3dygdw7fVgD7   2024年04月15日   31   0   0 C++

C引用和指针 创建引用 引用变量是对现有变量的“别名”,它是使用&运算符创建的: stringfood="Pizza";//食物变量 string&meal=food;//对food的引用 现在,我们可以使用变量名food或引用名meal来引用食物变量: cout<<food<<"\n";//输出Pizza cout<<meal<<"\n";//输出Pizza C内存地址 内存地址 在前一页的示例中,使用&运算符创建了一个引用变量。但它也可以用于获取变量的内存地址;即变量在计算机上存储的位置。 当在C中创建一个变量时,...

  YHTQQsaAg9bB   2024年04月12日   28   0   0 C++

在C语言中,数据和数据的处理操作(函数)是分开声明的,在语言层面并没有支持数据和函数的内在关联性,我们称之为过程式编程范式或者程序性编程范式。C兼容了C语言,当然也支持这种编程范式。但C更主要的特点在支持基于对象(object-based,OB)和面向对象(object-oriented,OO),OB和OO的基础是对象封装,所谓封装就是将数据和数据的操作(函数)组织在一起,在语言层面保证了数据的访问和操作的一致性,这样从代码上更能表现出数据和函数的关系。在这里先不讨论在软件工程上这几种编程范式的优劣,我们先来分析对象加上封装后的内存布局,C相对于C语言是否需要占用更多的内存空间,如果有,那么到...

  9c2DmW5eOllx   2024年04月15日   22   0   0 C++

需要开发一个https的服务,使用libhv来做,需要重新编译libhv,需要开启WITH_OPENSSL,前面编译一直很顺利,但是打开VS生成动态库的时候,报错,找不到ssl相关的文件,看了官方的文档,说需要自己配置ssl。然后研究怎么编译OPENSSL,和编译支持HTTPS的libhv花了一点时间,所以想着把这个问题记录下来。     相关链接: 网络库libhv,gitee:https://gitee.com/libhv/libhv openssl官网:https://www.openssl.org/ openssl下载地址(别人编译好的):https://slpro...

  OPDI55y16rFb   2024年04月10日   20   0   0 C++

试题B:小球反弹 我在刷博客的时候看见有人分享了蓝桥杯的题目,我想起了我之前大学打蓝桥杯刷题的时光,还是很怀念当时打比赛的氛围,关于这个小球反弹的题目,我感觉很有意思,我一开始也是走了好多弯路,然后去上了一个厕所,突然茅塞顿开,想到了一个很简单的方法,也看了一圈大家对这道题的结局方法,基本上以遍历枚举出结果为主,和我的思路不太一样,所有想分享给大家看一下我的想法,大家可以先看一下题目呢 错误尝试 我刚看到这个题目的时候,我最先想到的方法是通过定义y=kx+b的方式来模拟小球反弹的运动曲线,然后通过这个曲线方程来看他到底是碰到了长方形的长还是长方形的宽,因为通过一元一次方程来模拟运动函数,基本上...

  kFFoMnoqbq7H   2024年04月19日   17   0   0 C++

目录 简介 源码 函数说明 arv_camera_new arv_camera_acquisition arv_camera_get_model_name arv_buffer_get_image_width arv_buffer_get_image_height 简介 本文针对官方例程中的第一个例程:single-acquisition做简单的讲解,并简单分析其中调用的arv_camera_new,arv_camera_acquisition,arv_camera_get_model_name,arv_buffer_get_image_width,arv_buffer_g...

  yUYubVeRMAN3   2024年04月10日   86   0   0 C++

初识STL STL,(StandardTemplateLibrary),即"标准模板库",由惠普实验室开发,STL中提供了非常多对信息学奥赛很有用的东西。 vector vetor是STL中的一个容器,可以看作一个不定长的数组,其基本形式为: vector<数据类型>名字; 如:vector<int>v或vector<char>t。 vector的基本操作 先定义一个vector:vector<int>p;, p.clear()清空vector的所有数据。 p.empty()判断vector是否为空,返回值为true或false。 p.erase...

  8APDjIxGs5U4   2024年04月14日   48   0   0 C++

C类方法 类方法,也称为成员函数,是属于类的函数。它们用于操作或查询类数据,并封装在类定义中。类方法可以分为两种类型: 类内定义方法:直接在类定义内部声明和定义方法。 类外定义方法:在类定义内部声明方法,并在类外部单独定义方法。 类内定义方法 在类定义内部可以直接声明和定义方法,这是一种简洁的方式。 示例: classPerson{ public: voidintroduce(){ cout<<"Hello,mynameis"<<name<<endl; } stringname;//属性 }; intmain(){ Personp1; p1.name...

  YHTQQsaAg9bB   2024年04月19日   18   0   0 C++

左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。 公众号:一点sir,关注领取编程资料 介绍 函数跳转是要给IDE中非常重要也非常常用的功能,而原生的Vim并不提供这个功能,这个确定有点让人遗憾,按理说这么常用的功能应该是要提供的。但是没有关系,有插件可以实现这样的功能更,借助像ctags这样的插件来实现。 安装ctags 在CentOS或者OpenEuler系统中,可以通过以下命令安装: sudoyuminstallctags 在Ubuntu系统下,可以通过以下命令安装: sudoapt-getinstallctags 当然包名可能有所区别,这个要看各个厂商的命名规...

  oaRbYQvpZaaT   2024年04月17日   32   0   0 C++

C递归 递归是一种使函数调用自身的技术。这种技术提供了一种将复杂问题分解为简单问题的方法,从而更容易解决问题。 递归可能有点难以理解。理解其工作原理的最佳方法是通过实验来尝试。 递归示例 将两个数字相加很容易做到,但将一系列数字相加就更复杂了。在下面的示例中,通过将其分解为将两个数字相加的简单任务,使用递归将一系列数字相加: intsum(intk){ if(k>0){ returnk+sum(k1); }else{ return0; } } intmain(){ intresult=sum(10); cout<<result; return0; } 示例解释 当调用su...

  YHTQQsaAg9bB   2024年04月17日   31   0   0 C++

1.C10Kproblem 最初的服务器都是基于进程/线程模型的,新到来一个TCP连接,就需要分配1个进程(或者线程),但当连接数来到10K时,就需要不停地买服务器了.DanKegel在1999年提出了著名的世界难题:“c10kproblem”。那时的服务器还只是32位系统,运行着Linux2.2版本(后来又升级到了2.4和2.6,而2.6才支持x86_64),只配置了很少的内存(2GB)和千兆网卡。此时距离Redhat发布POSIXThreadLibrary(NPTL)还有4年时间,内核调度实体都是进程,内核并没有真正支持线程,还不能创建成千上万的线程.此时Windows还在时不时蓝屏···...

  5ixybSny6Da0   2024年04月16日   35   0   0 C++

在《深入解析C的auto自动类型推导》和《深入解析decltype和decltype(auto)》两篇文章中介绍了使用auto和decltype以及decltype和auto结合来自动推导类型的推导规则和用法,虽然确定类型的事情交给编译器去做了,但是在有的时候我们可能还是想知道编译器推导出来的类型具体是什么,下面就来介绍几种获取类型推导结果的方法,根据开发的不同阶段,你可以在不同阶段采用不同的方法,比如在编写代码时,编译代码时,代码运行时。 利用IDE查看 当你在编写代码的过程中想查看一下某个变量推导出来的类型是什么,做到心中有数,其实在IDE中就可以直接查看,现在的IDE都比较智能,如微软的...

  9c2DmW5eOllx   2024年04月13日   38   0   0 C++

C解引用 获取内存地址和值 在上一页的示例中,我们使用了指针变量来获取变量的内存地址(与引用运算符&一起使用)。但是,你也可以使用指针来获取变量的值,这可以通过使用运算符(解引用运算符)来实现: stringfood="Pizza";//变量声明 stringptr=&food;//指针声明 //引用:使用指针输出food的内存地址(0x6dfed4) cout<<ptr<<"\n"; //解引用:使用指针输出food的值(Pizza) cout<<ptr<<"\n"; 需要注意的是,符号在这里可能会让人感到困惑,因为它在我...

  YHTQQsaAg9bB   2024年04月13日   58   0   0 C++

CBreak和Continue break语句还可以用来跳出循环。 在以下示例中,当i等于4时跳出循环: for(inti=0;i<10;i){ if(i4){ break; } cout<<i<<"\n"; } CContinue 以下示例跳过了值为4的情况: for(inti=0;i<10;i){ if(i4){ continue; } cout<<i<<"\n"; } 在While循环中使用Break和Continue 你也可以在while循环中使用break和continue: Break示例 inti=0; while(...

  YHTQQsaAg9bB   2024年04月08日   62   0   0 C++

获取数组的大小 要获取数组的大小,可以使用sizeof()运算符: 示例 intmyNumbers[5]={10,20,30,40,50}; cout<<sizeof(myNumbers); 结果: 20 为什么结果显示为20而不是5,当数组包含5个元素时? 这是因为sizeof()运算符返回类型的大小(以字节为单位)。 要找出数组有多少个元素,必须将数组的大小除以它包含的数据类型的大小: 示例 intmyNumbers[5]={10,20,30,40,50}; intgetArrayLength=sizeof(myNumbers)/sizeof(int); cout<&...

  YHTQQsaAg9bB   2024年04月11日   51   0   0 C++

目录 前言 控制块简介 共享控制块 引用计数与弱引用计数创建过程 __shared_ptr __shared_count _Sp_counted_base 弱引用计数增加过程 再谈共享控制块 __weak_count 引用计数增加过程 弱引用计数的减少过程 弱引用计数减为0 引用计数的减少过程 引用计数减为0 参考文章 前言 本文结合源码讨论std::shared_ptr和std::weak_ptr的部分底层实现,然后讨论引用计数,弱引用计数的创建和增减。文章中尽可能的先阐述原理,然后再贴上代码。如果有不想看代码的,直接略过代码即可。本文涉及的源码均出自gcc9...

  yUYubVeRMAN3   2024年04月08日   103   0   0 C++