后端开发
C++ 标签描述

引言 还在手写晦涩难懂的Makefile文件吗?现如今,主流的c项目都采取CMake作为项目构建工具,CMake可以跨平台运行,而且语法相对Makefile而言直观很多,是时候将Makefile扫进垃圾堆了。 Hello,World! 首先先以单个源文件项目为讲解,新建一个main.cpp文件: include<iostream> usingnamespacestd; intmain(void){ cout<<"Hello,World!"<<endl; } 那么如何使用CMake编译这个文件呢?CMake所有的语句都写在一个名为CMakeLists.t...

  8Tw5Riv1mGFK   18天前   29   0   0 C++

目录 条款13:以对象管理资源(Useobjectstomanageresources) 关键想法 智能指针 条款14:在资源管理类中小心copying行为(Thinkcarefullyaboutcopyingbehaviorinresource-managingclasses) 条款15:在资源管理类中替工对原始资源的访问(Provideaccesstorawresourcesinresource-managingclasses) 显示转换或隐式转换 优缺点 条款16:成对使用new和delete时要采取相同形式(Usethesameformincorrespondingu...

  o0uwqWZeS4Wk   19天前   30   0   0 C++

在C中,lambda表达式提供了一种方便的方式来定义匿名函数。Lambda可以用来创建简单的函数对象,常用于算法库中的函数参数,特别是在STL(StandardTemplateLibrary)中。Lambda表达式的语法是这样的: [capture](parameters)->return-type{ function-body } 其中: capture:捕获列表,用于指定哪些变量从封闭的作用域中捕获以及如何捕获(值捕获、引用捕获、不捕获、隐式捕获)。例如,[x,&y]表示x通过值捕获,而y通过引用捕获。 parameters:参数列表,与普通函数的参数列表类似。如果没有参...

  BYaHC1OPAeY4   11天前   31   0   0 C++

C多态 多态(Polymorphism)是面向对象编程(OOP)的核心概念之一,它允许对象在相同操作下表现出不同的行为。在C中,多态通常通过继承和虚函数来实现。 理解多态 想象一个场景,你有一个动物园,里面有各种动物,如猫、狗、鸟等。每个动物都有自己的叫声。使用面向对象编程,我们可以创建一个基类Animal来表示所有动物,并为其定义一个makeSound()虚函数。然后,我们可以创建派生类,如Cat、Dog和Bird,并重写它们的makeSound()方法以实现各自的叫声。 classAnimal{ public: virtualvoidmakeSound()=0;//虚函数声明 }; cl...

  YHTQQsaAg9bB   20天前   32   0   0 C++

一、定义   在class的声明里头,真正有用的两样东西是datamembers和memberfunctions:   Datamembers:表示根据这个class所产生的object里头会有些什么东西,它事实上也是占据object内存的唯一东西(除非引入虚拟机制)。通常为数据的封装性,我们把datamembers声明为private或protected。   Memberfunctions:是用来处理datamembers的函数。通常为了界面的开放性,我们把memberfunctions设计为pubilc。 二、DataMembers(数据成员)   Datamembers的声明和一般no...

  oBaV3jusLkh1   11天前   68   0   0 C++

  请注意以下继承体系中各class的constructors写法: 1classCPoint 2{ 3public: 4CPoint(floatx=0.0) 5:_x(x){} 6 7floatx(){return_x;} 8voidx(floatxval){_x=xval;} 9protected: 10float_x; 11}; 12 13classCPoint2d:publicCPoint{ 14 15public: 16CPoint2d(floatx=0.0,floaty=0.0) 17:CPoint(x),_y(y){} 18 19floaty(){return_y;} 20vo...

  oBaV3jusLkh1   2天前   6   0   0 C++

Qt_1 QtCreator是Qt公司生产的IDE。它集成了多个工具,包括代码编辑器、图形UI(GUI)设计器、编译器、调试器、Qt设计器、Qt快速设计器和Qt助手等。 QtDesigner帮助设计基于小部件的GUI,而QtQuickDesigner提供了在设计模式下创建和编辑基于QML的GUI的UI。Qt助手是一个集成的文档查看器,只需按F1键即可打开与给定Qt类或函数相关的内容。 您可以在UI中看到以下GUI部分: IDE菜单栏:这为用户提供了一个在窗口中查找大多数特定于应用的功能的标准位置。这些功能包括创建项目、打开和关闭文件、开发工具、分析选项、帮助内容以及退出程序的方式。 模式...

  3dygdw7fVgD7   15天前   38   0   0 C++

C资源列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等 目录 进程间通信 Json 日志 机器学习 数学 内存分配 多媒体 网络 PDF 物理学 映射 正则表达式 机器人学 科学计算 脚本 序列化 排序 视频 虚拟机 Web应用框架 XML 多项混杂 软件 编译器 在线编译器 调试器 集成开发环境 构建系统 静态代码分析 编码样式工具 最后 标准库 C标准库,包括了STL容器,算法和函数等。 CStandardLibrary:是一系列类和函数的集合,使用核心语言编写,也是CISO自身标准的一部分。 StandardTe...

  YHTQQsaAg9bB   2天前   6   0   0 C++

符号 目录 符号 注释 奇怪的注释 C风格的注释无法嵌套 一些特殊的注释 注释的规则建议 反斜杠'\' 反斜杠有续行的作用,但要注意续行后不能添加空格 回车也能起到换行的作用,那续行符的意义在哪? 反斜杠的转义功能 单引号和双引号 字面值,字符串,字符,字符变量的大小 为什么sizeof('1')的大小是4? char类型一直在发生截断. 不允许定义空字符常量 单引号内一般是一个字符,还可以有多个字符 短路 位运算 位运算和逻辑运算区别 位运算的几点注意 异或的运算规则 异或的经典问题:两数交换 位操作建议使用宏定义好后使用 位运算整型提升问题 左移和右移 概...

  C0Tz0A5KKSwy   14天前   36   0   0 C++

先说结论,lambda是不能重载的(至少到c23依旧如此,以后会怎么样没人知道)。而且即使代码完全一样的两个lambda也会有完全不同的类型。 但虽然不能直接实现lambda重载,我们有办法去模拟。 在介绍怎么模拟之前,我们先看看c里的functor是怎么重载的。 首先类的函数调用运算符是可以重载的,可以这样写: structFunctor{ booloperator()(inti)const { returni%20; } booloperator()(conststd::string&s)const { returns.size()%20; } }; 在此基础上,c11还引入了...

  yZdUbUDB8h5t   14天前   22   0   0 C++

“深度解读《深度探索C对象模型》”系列已经在CSDN上和我的公众号上更新完毕,请有需要的同学移步到我的CSDN主页里去阅读,主页地址:https://blog.csdn.net/iShare_Carlos?spm=1010.2135.3001.5421或者敬请关注我的公众号:iShare爱分享 前面两篇请从这里阅读:深度解读《深度探索C对象模型》之C虚函数实现分析(一)深度解读《深度探索C对象模型》之C虚函数实现分析(二) 虚继承情况下的虚函数和多态的实现分析 虚继承如果再加上多重继承关系,或者具有两层以上的虚继承关系,那么编译器对于虚函数的支持简直像进了迷宫一样让人眼花缭乱,它们的关系让...

  9c2DmW5eOllx   2天前   6   0   0 C++

  概述:拷贝并交换(Copy-and-Swap)是C编程中的惯用法,用于实现赋值操作符和确保异常安全的拷贝构造函数。其核心思想是通过拷贝构造函数创建临时副本,再通过交换确保操作的异常安全性。这种方法在C11之前和之后都适用,但在C11中,移动语义和右值引用的引入使得实现可以更加高效。 拷贝并交换(Copy-and-Swap)是一种C编程中的惯用法,通常用于实现赋值操作符和确保异常安全的拷贝构造函数。它的基本思想是使用拷贝构造函数创建临时副本,然后通过交换临时副本和当前对象的内容来确保异常安全。 include<iostream> include<algori...

  KxE3CZnPt4x3   16天前   27   0   0 C++

目录 条款26:尽可能延后变量定义式的出现时间(Postponevariabledefinitionsaslongaspossible) 条款27:尽量少做转型动作(Minimizecasting) 条款28:避免返回handles指向对象内部成分(Avoidreturning“handles”toobjectinternals) 条款29:为“异常安全”而努力是值得的(Striveforexception-safecode) 异常不安全的案例 异常安全函数的保证 强烈的异常安全 条款30:透彻了解inlining的里里外外(Understandtheinsandoutsofin...

  o0uwqWZeS4Wk   2天前   7   0   0 C++

  概述:在C中,遍历由空格分隔的字符串的单词有多种方法,包括使用`std::istringstream`、手动遍历字符和正则表达式。其中,`std::istringstream`是简单高效的选择,通过流提取单词。手动遍历字符较为繁琐,正则表达式方法更灵活但可能有性能开销。根据实际需求选择方法,本文提供了清晰的实例源代码。 在C中,遍历由空格分隔的单词组成的字符串有多种方法,其中包括使用C标准库中的std::istringstream、手动遍历字符的方法以及使用正则表达式等。下面将分别介绍这些方法,并提供详细的实例源代码。 方法一:使用std::istringstream in...

  KxE3CZnPt4x3   16天前   25   0   0 C++

本文基于网络密码课上的实验 本来想水一水就过去,代码就网上找找,不行就GPT写,但是!一份都找不到,找到的代码都是跑不了的,总会是就是乱七八糟。所以准备认真的写一份。 代码编译成功的前提是要预先装好openssl库! 本随笔主要有三个内容: 编写程序,模拟计算NTResponse、AuthenticatorResponse, 根据前期PPTP实验中捕获的数据包中CHAP协议的挑战响应认证数据,在未知用户口令情况下编程实现CHAP认证口令的破解 在单向数据条件下(仅能截获用户数据)实现CHAP认证口令的破解 首先放一个我自己抓的包,可以看到,这是chap协议挑战响应的三次握手, &nbsp...

  5204BCdALxQk   10小时前   9   0   0 C++

输入输出流iostream 向流写入数据<<运算符 <<运算符接受两个运算对象,此运算符将给定的值写到给定的ostream对象中:左侧:运算对象为ostream对象,如cout、cerr、clog右侧:运算对象是要打印的值输出结果:写入给定值的那个ostream对象,即此运算符返回其左侧的运算对象。表达式等价于:(std::cout<<"Entertwonumbers:")<<std::endl; 写入endl效果 添加一个换行符,然后结束当前行,并将与设备关联的缓冲区(buffer)中的内容刷到设备中显示。缓冲刷新操作可以保证到目前为止程序所产...

  oXKBKZoQY2lx   2天前   6   0   0 C++

目录 条款17:让接口容易被正确使用,不易被误用(Makeinterfaceseasytousecorrectlyandhardtouseincorrectly) 限制类型和值 规定能做和不能做的事 提供行为一致的接口 条款19:设计class犹如设计type(Treatclassdesignastypedesign) 条款20:宁以pass-by-reference-to-const替换pass-by-value(Preferpass-by-reference-to-constopass-by-value) 避免构造和析构 避免对象切割 例外 条款21:必须返回对象时,别妄...

  o0uwqWZeS4Wk   17天前   26   0   0 C++

Qt_2 小部件是GUI的基本元素。它也称为UI控件。它接受来自底层平台的不同用户事件,如鼠标和键盘事件(以及其他事件)。我们使用不同的小部件创建UI。曾经有一段时间,所有的GUI控件都是从头开始编写的。Qt小部件通过开发具有现成的GUI控件的桌面GUI来缩短时间,并且Qt广泛使用继承的概念。所有小工具都继承自QObject。QWidget是一个基本小部件,是所有UI小部件的基类。它包含描述小部件所需的大多数属性,以及几何图形、颜色、鼠标、键盘行为、工具提示等属性。让我们看看下图中的QWidget继承层次结构: 大多数Qt小部件名称都是不言而喻的,因为它们以q开头,所以很容易识别。下面列出了...

  3dygdw7fVgD7   10小时前   7   0   0 C++

官方说明:Qt中有个宏Q_GLOBAL_STATIC可以用来创建一个全局静态变量,下面看下官方文档的说明: Q_GLOBAL_STATIC(Type,VariableName)CreatesaglobalandstaticobjectoftypeQGlobalStatic,ofnameVariableNameandthatbehavesasapointertoType.TheobjectcreatedbyQ_GLOBAL_STATICinitializesitselfonthefirstuse,whichmeansthatitwillnotincreasetheapplicationor...

  GnNrEyYR0uXU   2天前   6   0   0 C++

类模板应用 explicit explicit是一个关键字,用于指定该构造函数是显式构造函数。在C中,当一个类的构造函数只有一个参数时,它可以被用于隐式类型转换,这可能会导致意想不到的行为和潜在的错误。为了避免这种情况,可以使用explicit关键字来声明该构造函数,表示禁止隐式类型转换,只能显式地调用该构造函数来创建对象。 include<iostream> classMyClass{ public: explicitMyClass(intx){ std::cout<<"Explicitconstructorcalledwith"<<x<<s...

  3dygdw7fVgD7   17天前   31   0   0 C++