
C++
文章平均质量分 74
EJoft
这个作者很懒,什么都没留下…
展开
-
C++ in _int_malloc () from /lib64/libc.so.6 问题记录
c++ Segment Fault 排查原创 2022-07-08 17:37:32 · 1901 阅读 · 2 评论 -
Ubuntu安装g++多版本方法
由于不能转载,这里记录一下网上现有较好的方法:如何在Ubuntu 18.04上安装GCC编译器如何确定gcc是否支持c11,c14,c17原创 2022-04-05 15:45:52 · 1955 阅读 · 0 评论 -
C++知识点-成员函数中const的使用
const 在C++中是一个很重要的关键字,其不光可以用来修饰变量,还可以放在函数定义中,这里整理了其在函数中的三个用法。修饰入参首先我们要明白在C++中调用函数时存在两种方法,即传递值和传递引用。值传递值传递时,调用函数时会创建入参的拷贝,函数中的操作不会对原值进行修改,因此这种方式中不需要使用 const 来修饰入参,因为其只是对拷贝的临时对象进行操作。址传递传递地址时函数中的操作实际上是直接对原来的值进行修改,因此我们这里可以使用 const 修饰入参。const修饰入参当const修原创 2022-03-12 14:50:52 · 4964 阅读 · 4 评论 -
C++知识点-静态成员变量和静态成员函数
文章目录静态成员变量静态变量在任何类对象创建前初始化定义静态成员变量使用静态成员变量类对象共享静态成员const constexpr静态成员函数Reference静态成员变量这里先引用GeeksforGeeks的一段内容:Static data members are class members that are declared using static keywords. A static member has certain special characteristics. These are原创 2022-02-16 21:22:18 · 811 阅读 · 7 评论 -
C++知识点-命名空间
文章目录命名空间的特性声明命名空间和命名空间成员全局命名空间不连续命名空间嵌套命名空间using声明和using编译指令命名空间别名综合代码示例ReferenceC++标准提供了命名空间的工具,其作用很简单也很好理解,为了就是解决多个库之间同名对象的冲突问题,这和Java中包的作用是一样的。命名空间的特性首先熟悉一下命名空间的两个概念。声明区域:可以在其中进行声明的区域,如全局文件的声明区域是文件,函数内声明的变量声明区域为代码块。潜在作用域:潜在作用域从声明点开始,到其声明区域的结尾。因此潜在原创 2022-02-12 21:50:58 · 702 阅读 · 1 评论 -
C++知识点 存储持续性、作用域和链接性总结
C++为在内存中存储数据提供了多种选择,可以选择数据保存在内存中的时间长度(存储持续性 storage duration)以及程序哪一部分可以访问数据(作用域 scope 和链接 linkage)存储持续性C++中有四种不同的方案来存储数据,这些方案的区别就在于数据保留在内存中的时间**自动存储持续性(Automatic Storage Duration):**在函数定义中声明的变量(包括函数参数)在存储持续性上是自动的。它们在程序开始执行其所属的函数或者代码块时被创建,在执行完函数或代码块时,他们原创 2022-02-11 18:12:22 · 660 阅读 · 0 评论 -
C++知识点-函数模版
原创 2022-02-11 17:48:20 · 779 阅读 · 0 评论 -
C++基础知识-引用和指针
文章目录什么是引用引用与指针的区别指针可以先声明后赋值,但是必须在声明引用时将其初始化指针可以重新赋值,但是引用不行指针可以为空,引用不能为空指针可以嵌套,引用不可以指针支持算术运算,引用不可以使用引用基本类型用作函数参数临时变量返回引用常见的问题为什么要加上引用这个技术为什么this不是引用引用参数,指针参数和按值传递如何选择Reference在学习C++中的引用时,由于博主之前是Java选手,所以总是对于C++中的引用和指针的概念有一些绕,既然有了指针为什么还要有引用呢?在这里记录下自己的思考。什么原创 2022-02-10 21:57:26 · 741 阅读 · 0 评论 -
C++知识点-函数基础
这里总结下C++函数的一些基础知识。在工作中深刻体会到基础的重要性,以及理论指导实践,必须有一定的理论知识作为依据,才能写出健壮的代码以及有不错的解决问题的能力。如果总结的知识不对或者已过时还请大家指正。基本知识C++对于返回值的类型有一定的限制:不能是数组,但是可以是其他类型:整数,浮点数,指针,结构和对象。通常,函数通过将返回值复制到指定的CPU寄存器或内存单元中来将其返回。随后,调用程序将查看该内存单元。在编译阶段进行的原型化被称为静态类型检查(static type checking)函数原创 2022-02-10 17:06:50 · 583 阅读 · 0 评论 -
C++知识点-内联函数
内联函数是C++为了提高程序的运行速度而诞生的一项技术。要理解内联函数的作用必须对计算机组成和汇编原理有所了解。这里简单介绍下。简介我们知道当程序在运行时遇到函数调用,对应到CPU内部就会处理跳转指令,此时会需要将调用函数代码处下一条指令记录到寄存器中以便函数返回时能够继续往下顺序执行,并且还需要将函数参数复制到栈中。这显然会在程序运行过程中增加负担。当调用内联函数,编译器会使用响应的函数代码替换函数调用。因此,程序无须进行两次跳转。内联函数的运行速度比常规函数稍快,代价就是需要占用更多的内存,如果程原创 2022-02-09 18:08:51 · 522 阅读 · 0 评论 -
C++知识点-函数指针
初识C++中函数指针时感觉其就是一种函数式编程的实现,主要实现的功能是可以将函数当作参数传入其他函数中。与数据项类似,函数也有地址。**函数的地址是存储其机器语言代码的内存的开始地址。**这句话可能不太好理解,但是学过汇编后大致可以猜到函数指针就指向了函数汇编后一些列指令中的第一条指令。学好编程真是万丈高楼平地起,一定要把地基打好,即计算机的基础知识学好。使用函数指针可以在不同的时间传递不同函数的地址,因此可以在不同的时间使用不同的函数,有点类似于策略模式的思想。基础知识要使用函数指针,大致需要完成原创 2022-02-09 15:42:07 · 2170 阅读 · 0 评论 -
Ubuntu开发环境搭建详细笔记
本文详细介绍了从零开始安装ubuntu系统,并且在上面搭建C++和Java开发环境的方法,欢迎大家提出宝贵意见。原创 2022-01-30 22:06:45 · 4292 阅读 · 14 评论 -
C++知识点 单独编译总结
作为一个工业级的高级编程语言,C++和C语言一样,也提供了单独编译的能力,即将组件函数放在独立的文件中,单独编译这些文件,然后再将它们链接为可执行的程序。**如果只修改了项目中的一个文件,则可以重新编译该文件,然后将它与其他文件的编译版本链接。**例如,make 可以跟踪程序的依赖文件以及这些文件的最后修改时间。运行make时,如果它检测到上次遍以后修改了源文件,make将记住重新构建程序所需要的步骤。简单介绍一般程序可以分为三类:头文件:包含结构,对象声明和使用这些结构,对象的函数的原型源代码原创 2022-01-26 15:15:38 · 791 阅读 · 0 评论 -
汇编语言(6)——内中断
任何一个通用的CPU,都具备一种能力,可以在执行完当前正在执行的指令之后,检测到从CPU外部发送过来的或内部产生的一种特殊消息,并且可以立即对所接收到的信息进行处理。这种特殊的消息,我们可以称之为中断消息。中断的意思是指,CPU不再接着(刚执行完的指令)向下执行,而是转去处理这个特殊消息。对于8086CPU,当CPU内部有下面的情况发生的时候,将产生相应的中断信息除法错误单步执行执行into指令执行int指令8086CPU用中断类型码来标识中断信息的来源,中断类型码是一个字节型数据,可以表示2原创 2022-01-24 16:59:55 · 471 阅读 · 0 评论 -
MacOS(Big Sur)安装GDB教程
最近在学习GDB,由于开发机是Mac,因此需要自己安装GDB,在此记录下安装使用过程。环境信息macOS Big SurVersion 11.2.3安装GDB安装Homebrew这一步由于国内网络原因,推荐使用清华大学的brew源,点这里安装 gbd直接使用 brew install gdb 命令即可安装创建证书在 mac 系统中使用 gdb 必须创建证书,这里可以参考 Mac在钥匙串创建系统证书失败证书创建完成之后需要将其信任选项设为 总是信任为gdb签名创建如下文件 entit原创 2022-01-07 15:51:08 · 5399 阅读 · 0 评论 -
C++析构函数为什么建议是虚函数
学习C++时,看到书上有建议析构函数函数设置为虚函数,一直不理解,现在我们写代码验证下这一建议。先看下不带virtual 的析构函数using namespace std;class TBase {public: TBase() {} ~TBase() { cout << "Base Destructor" << endl; } void show() { cout << "base show"原创 2021-12-26 21:50:12 · 767 阅读 · 0 评论 -
C++输入cin模版代码以及const与指针的关系
C++处理输入异常while (!(cin >> factor)) // bad input{ cin.clear(); while (cin.get() != '\n') continue; cout << "Bad input; Please enter a number: ";}数组处理函数的常用处理方式修改数组:void f_modify(double ar[], int n);不修改数组:void f_no_c原创 2021-11-28 23:07:53 · 883 阅读 · 0 评论 -
C++指针、数组和指针算术
在C++中,指针和数组基本等价,原因在于指针算术(pointer arithmetic)和C++内部处理数组的方式。指针算术中,指针变量+1后,增加的量等于它指向的类型的字节数。在多数情况下,C++将数组名解释为数组第1个元素的地址。int* stack = {1, 2, 3};要注意以下两点:stack[1] == *(stack + 1),C++会将数组名的表达式转化为指针的表达式stack == &stack[0] ,数组名被解释为数组第一个元素的地址指针和字符串观察如下代原创 2021-11-21 10:09:54 · 410 阅读 · 0 评论 -
C++指针和自由存储空间
计算机程序在存储数据时必须跟踪3个基本属性:信息存储在何处存储的值是多少存储的信息是什么类型我们可以从C++ 语法的角度简单分析一下声明语句;int a;该声明语句指出了值的类型和符号名,还让程序为值分配内存,并在内部跟踪该内存单元,这是一种基本类型的策略。我们来看复合类型的策略。即指针的策略,指针是一个变量,其存储的是值的地址,而不是值本身。对于两种不同变量的指针,虽然这两个指针指向不同的数据类型,但是其本身的值(即地址)的大小是相同的,通常在32位的机器上,一个指针占4字节,因此求s原创 2021-11-20 20:37:50 · 993 阅读 · 0 评论 -
MacOS配置C++开发环境
作为一名程序员,一定要学一下C语言和C++,因此本帖记录下在MacOS环境中进行C++学习的开发环境配置步骤,以及各种编译器的安装前置条件电脑:macOS BigSur Version 11.2.3(20D91)工具:homebrewIDE:JetBrains Clion安装编译器Xcode Command Line Tools 安装首先我们需要安装 command line tools,可以参考 How to Install Xcode Command Line Tools on a M原创 2021-11-13 15:31:28 · 7913 阅读 · 0 评论