C/C++
文章平均质量分 91
C++ 是一门面向对象编程的语言,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤.而是为了描述某个事物在整个解决问题的步骤中的行为,更注重的是程序的整体设计,方便程序后期维护、优化和管理,让一个功能尽可能的通用。面向对象编程只有一个价值: 应对需求的变化,本意是要处理大型复杂系统的设计和实
天喜Studio
6月份城市(哈尔滨)之星TOP2、C/C++领域新星创作者。本科大三在校学生,致力于C/C++的学习
展开
-
【C++11新特性】lambda表达式和应用场景
C++11 中的 lambda表达式用于定义匿名函数,同样有参数列表,返回值、类型和函数体,但是它可以在函数内部定义。定义小型匿名函数对象时更加便捷。lambda表达式的格式:auto 函数名 = [capture](parameters) -> return_type { body };其中:captures 捕获列表,用于捕获lambda外部的变量 , lambda可以把上下文变量以**值=或引用&**的方式捕获(如果是引用传递,lambda 函数将会改变变量值),在body中直接使原创 2024-05-09 22:53:52 · 170 阅读 · 0 评论 -
【C/C++】设计模式——单例模式
单例模式确保了一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式的特点:1.一个类只有一个实例2.提供一个全局访问点来获取这个实例3.单例对象必须由单例类进行创建(构造函数设为私有 private)如何实现单例模式?构造析构拷贝构造私有提供静态公有的获取对象的方法控制资源访问:通过单例模式,可以确保对某个资源的全局访问点只有一个,这样可以防止其他对象对该资源的访问导致状态不一致或数据污染。减少系统开销:如果一个类的实例创建非常消耗资源(如读取配置文件、打开数据库连接等),原创 2024-05-04 19:43:42 · 718 阅读 · 0 评论 -
【C/C++】C++中的四种强制类型转换
C++四种类型转换static_cast(待转换量)dynamic_cast(待转换量 )const_cast(待转换量 )reinterpret_cast( 待转换量 )为什么要提出新的类型转换?C语言中的强制类型转换无所不能,而C++强调类型安全。static_cast静态转换编译时确定的,用于相关内容的转换 。int short char 之间浮点数与整数普通指针和泛型指针原创 2024-03-27 19:16:37 · 1029 阅读 · 4 评论 -
【C/C++】右值引用 | 完美转发 | std::move移动语义
引用可以分为左值引用,右值引用,常引用左值:可以出现在赋值号左和右的值可以取地址、修改、起名例如:变量、指针、对象右值:只能出现在赋值号右面不可取地址、修改、起名例如:常量、函数返回值、表达式返回值常引用可以接受左值也可以接受右值,但是不可以修改引用的值左值引用:给变量起别名,使用 &定义,定义了引用就要初始化,不存在空的引用!左值引用知识点:引用的概念和用法右值引用:用 && 符号引用右值左值引用和右值引用定义举例:原创 2024-03-01 11:13:57 · 661 阅读 · 5 评论 -
【C/C++】inline内联函数详解
内联函数在C++中是一种特殊的函数,内联函数的代码在编译时会在调用的位置展开,而不是在运行时调用函数。这样做可以消除函数调用的开销,从而提高程序的执行效率。相当于define宏替换内联函数可以分为:隐式内联函数:类内的函数(虚函数除外)都为隐式内联函数显式内联函数:在类外使用inline关键字修饰的函数原创 2024-02-28 23:40:37 · 684 阅读 · 4 评论 -
【C++STL】迭代器分类 失效问题
正向迭代器iterator容器.begin()容器.end()正向遍历容器内元素常正向迭代器容器.cbegin()容器.cend()正向遍历容器内的常量元素反向迭代器容器.rbegin()容器.rend()反向遍历容器内元素常反向迭代器容器.crbegin()容器.crend()反向遍历容器内的常量元素int main()//正向迭代器while (it!it++;//常正向迭代器while (cit!cit++;//反向迭代器。原创 2024-02-25 18:29:54 · 656 阅读 · 2 评论 -
【C++STL】STL容器详解
容器底层实现描述包含头文件向量vector数组,快速访问可以在O(1) 时间内访问和修改任意元素,在序列尾部进行插入和删除时,具有 O(1)时间复杂度,对任意项的插入和删除就有的时间复杂度较高,尤其对向量头的添加和删除开销非常高双端队列deque一个中央控制器和多个缓冲区基本上与向量相同,唯一的不同是,其在序列头部插入和删除操作时间复杂度也为 O(1)表list双向链表,快速增删对任意元素的访问时间复杂度为 O(n),支持快速插入删除 O(1)原创 2024-02-24 17:11:42 · 745 阅读 · 3 评论 -
【C++11新特性】详解智能指针 创建、使用、注意事项
C++11 中引入了智能指针,便于进行内存管理使用智能指针 需要包含头文件:#include 以及 std 命名空间智能指针会自动回收空间,不需要担心内存泄漏问题四种智能指针:auto_ptr(C++11 被弃用)unique_ptrshared_ptrweak_ptr一、 auto_ptr创建auto_ptr对象的三种方式:原创 2024-02-18 17:04:18 · 1135 阅读 · 0 评论 -
【C++】静态库lib和动态库dll的优缺点、使用方法
静态库lib优点静态库的运行效率高、速度快缺点动态库dll优点1.多个应用程序依赖一个动态库时,动态库只需要拷贝一份,节省内存空间2.更新、部署、发布简单1.多个应用程序依赖一个静态库时,静态库会存在多份,浪费内存空间2.更新、部署麻烦:修改静态库代码后,需要重新编译库文件以及整个可执行文件使用方法1.将头文件拷贝到当前项目中,添加头文件依赖#include "./xx.h"2.将库文件lib拷贝到当前项目中,添加库文件依赖#pragma comment(lib,"./xx.lib")原创 2023-09-08 16:06:33 · 704 阅读 · 0 评论 -
C++全部基础知识汇总 全篇超3万字超详细!(干货笔记分享)零基础学C++这一篇就够了
C++ 是一门面向对象编程的语言,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为,更注重的是程序的整体设计。2.c++输入输出3.小结三、命名空间与作用域1.作用域2.命名空间3.为什么需要using namespace std ?四、动态申请内存空间new-delete1.c语言动态申请内存空间2.new-delete3.new指针、new数组3. 总结五、bool布尔类型1.自制BOOL类型2.bool3.BO原创 2023-09-01 23:19:13 · 1219 阅读 · 6 评论 -
【C/C++】#define宏替换高级用法
传参数的宏替换二、宏替换不会做表达的运算三、宏替换多行—反斜杠连接四、#undef取消宏替换五、宏替换转字符串、拼接等用法六、宏替换的优缺点宏替换的优点:便于维护,提高代码的可读性由于宏替换将代码片段在预处理期替换,可以提高程序的执行效率宏替换的缺点:没有安全类型的检查宏定义在部分代码中可能不直观,可能不方便调试宏替换不会运算求解原创 2023-08-30 10:20:25 · 2070 阅读 · 0 评论 -
【C/C++】虚析构 | 抽象类
纯虚函数、抽象类在多态下,有时抽象出来的父类的虚函数作为接口函数,不知道如何实现或不需要实现只有继承的子类才明确如何实现,就可以把父类的虚函数变为纯虚函数做法是:将父类中的虚函数加上 =0 virtual void fun() = 0;纯虚函数在当前类不必实现,而子类必须要重写实现纯虚函数,否则不能定义子类对象(error:纯虚函数xxx 没有强制替代项)当类中存在纯虚函数时,这个类就被称为抽象类,抽象类不允许定义对象接口类:类中的所有虚函数都是纯虚函数原创 2023-08-29 11:13:00 · 90 阅读 · 0 评论 -
【C/C++】虚函数调用流程 | 虚函数和一般函数的区别
虚函数指向一个虚函数表,表中存放了虚函数的地址,实际的虚函数存放在代码段中。当子类继承了父类的时候也会继承父类的虚函数表,当子类重写父类中虚函数的时候,会将继承到虚函数表中的地址替换为重写的函数地址。这个过程称为覆盖虚函数列表中,在重写虚函数的后面是父类未重写的虚函数,然后是子类虚函数以上的过程将在编译阶段进行调用流程不同:虚函数通过虚函数指针间接引用,普通函数可以使用函数名直接调用调用效率不同:虚函数调用流程复杂,效率低,普通函数效率高使用场景不同:虚函数的目的是为了实现多态使用了虚函数原创 2023-08-28 09:30:07 · 755 阅读 · 0 评论 -
【C/C++】多态的概念 | 虚函数 | 虚函数指针
多态是C++面向对象编程中重要的特性。相同的行为方式可能导致不同的行为结果,即产生了多种形态行为,即多态。就是不同的类可以共享一个函数,但是各自的实现不同为了实现多态,首先要有继承关系,在基类中声明一个虚函数,然后再派生类中进行不同的实现根据继承中的父类指针可以指向子类对象:继承的条件下,父类的指针可以指向任何继承于该类的子类对象,多种子类对象具有多种形态由父类的指针统一管理 父类的指针也会具有多种形态多种子类表现为多种形态由父类的指针进行统一,那么这个父类指针就具有了多种形态。(多态)原创 2023-08-27 12:30:58 · 240 阅读 · 0 评论 -
【C/C++】父类指针指向子类对象 | 隐藏
隐藏在同一个类中,两个只有参数列表不同(同名同返回类型)的函数能构成函数重载,我们调用的时候,可以根据参数类型、参数个数,编译器自动匹配调用哪个函数。例如:class CTest { void fun(); void fun(int a); void fun(char a);}如果在父类和子类中出现同名函数,由于在不同的类中即不同的作用域,即使函数的参数列表不同,也不能构成函数重载这种情况称为隐藏C++中,当一个派生类定义了一个和基类同名的成员函数时,基类的同名函数会被隐藏,这原创 2023-08-26 09:51:20 · 1835 阅读 · 0 评论 -
【C/C++】继承中构造函数与析构函数执行的顺序
构造函数执行顺序:当派生类对象被创建时,首先会调用基类的构造函数,然后调用派生类自己的构造函数。构造函数的调用顺序是按照继承的顺序,从基类依次往下调用。即先调用最上层的基类,再依次往下调用定义子类对象,优先调用的是子类的构造函数,在子类的初始化参数列表初始化父类和子类的成员,先调用父类的构造函数初始化父类成员,再初始化子类成员(与内存布局顺序一致)析构函数执行顺序:析构函数的调用顺序与构造函数的调用顺序相反,先调用派生类自己的析构函数,再依次回溯调用基类的析构函数,直至最上层的基类的析构函数原创 2023-08-25 13:24:21 · 970 阅读 · 0 评论 -
【C/C++】继承的方式和优点
继承方式描述了父类成员在子类中的访问控制继承方式是指子类从父类继承了一些成员,包括数据成员和成员函数。继承方式共有三种:publicprotectedprivate继承方式和访问修饰符共同决定了父类成员在子类中表现出来的属性在继承关系中,子类可以访问父类中被继承的公有成员和受保护成员,但无法访问父类中被继承的私有成员。公有成员在子类中的访问控制仍然保持为公有,受保护成员在子类中的访问控制变为受保护。原创 2023-08-24 11:17:46 · 315 阅读 · 0 评论 -
【C/C++】类之间的纵向关系——继承的概念
继承的概念继承是类之间的纵向关系,是C++面向对象中的重要特性继承的类称为派生类(子类),被继承的类称为基类(父类)在子类类名后加: 继承方式 父类class CFa子类和父类内存空间分布成员在内存空间分布为:先父类成员后子类成员,而每个类中的成员分布与在类中声明的顺序一致。子类对象所占用的空间:子类继承父类,相当于将父类的成员包含到自己的类里,所以定义子类对象所占用的空间大小除了子类自身的成员还包括父类的成员。父类对象的内存空间只包含父类自己的属性和方法,不包含任何子类的属性和方法原创 2023-07-31 10:32:14 · 150 阅读 · 0 评论 -
【C/C++】类之间的横向关系
类之间的关系可以分为横向关系和纵向关系,本文介绍类之间的横向关系一、组合组合(Composition):表示一种拥有的关系,它使一个类成为另一个类的一部分。组合关系是一种强依赖关系,如果父对象销毁,则子对象也将被销毁。组合是包含与被包含的关系。组合是一个类中包含另一个类对象。组合是一种强所属关系,组合关系的两个对象往往具有相同的生命周期,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,整体不存在,部分一定不存在。例原创 2023-07-23 22:29:54 · 255 阅读 · 1 评论 -
【C/C++】类成员进阶——类中常量成员const
常量的特性是:定义就必须初始化,一旦初始化后就不能再进行修改实际上,上面的方式在构造函数中并不是真正的初始化,而是对变量进行赋值当类中有const类型的变量时,在定义的时候必须要初始化,而这个初始化操作是在初始化参数列表中完成的,而构造函数的函数体代码中进行的操作严格来说是赋值,而并非初始化。先执行初始化参数列表,在执行构造函数体中的代码。对于普通的变量来说也可在初始化参数列表中初始化。初始化参数列表:用来真正初始化对象中成员属性,构造参数列表后加冒号,多个成员属性用逗号分隔常函数:类中的成原创 2023-07-22 12:47:04 · 291 阅读 · 0 评论 -
【C/C++】类成员进阶——类中静态成员static
静态static成员属性属于类,编译期存在,一个类中只会存在一份,多个对象共享这一份静态成员存在与否和是否定义对象无关,在构造函数中不能对其初始化(赋值)静态、静态成员二、静态成员变量1.静态成员变量属于类2.静态成员变量一个类中只会存在一份3.静态成员变量存在与否和是否定义对象无关4.多个对象共享一份静态成员变量静态static成员属性三、静态成员函数1.静态成员函数的定义2.静态成员函数的使用3.静态成员函数没有this指针普通成员函数与静态成员函数的区别本文全部代码:原创 2023-07-16 21:07:43 · 290 阅读 · 0 评论 -
【C/C++】深拷贝与浅拷贝
深拷贝是在堆区重新申请空间,进行拷贝操作深拷贝是指在对象复制过程中,不仅复制对象的值,还复制指针所指向的内容这意味着新对象将有其独立的内存副本,对其中一个对象进行修改不会影响到另一个对象浅拷贝是简单的赋值拷贝操作浅拷贝是指在对象复制过程中,只会简单地复制对象的值,包括指针的地址,而不复制指针所指向的内容新对象和原对象将共享同一块内存,如果其中一个对象修改了这块内存,那么另一个对象也会受到影响拷贝构造函数中通过为m_height分配新存并复制p.m_age和p.m_height的值来执原创 2023-06-30 20:58:20 · 250 阅读 · 1 评论 -
【C/C++】拷贝构造函数的调用 使用方法
默认情况下,c++编译器至少给一个类添加3个函数1.默认构造函数(无参,函数体为空)2.默认析构函数(无参,函数体为空)3.默认拷贝构造函数,对属性进行值拷贝构造函数的调用规则:* 如果用户定义有参构造函数,c++不再提供默认无参构造,但是会提供默认拷贝构造* 如果用户定义拷贝构造函数,c++不再提供其他构造函数拷贝构造函数的调用拷贝构造函数调用有三种情况:使用一个已经创建完毕的对象来初始化一个新对象值传递的方式给函数参数传值以值方式返回局部对象根据构造函数的分类创建原创 2023-06-30 20:42:40 · 920 阅读 · 0 评论 -
【C/C++】构造函数的分类及调用
构造函数的分类按照参数分类分为有参构造无参构造(默认构造函数)按照类型分类分为普通构造拷贝构造构造函数的调用括号法(常用)显式法隐式转换法- 普通构造普通构造函数在创建对象时初始化对象的成员变量,并返回一个新的对象- 拷贝构造拷贝构造接受同一类的对象作为参数,并创建一个新的对象,新对象的成员变量与原始对象相同拷贝构造函数能够确保新对象具有独立的数据副本而不是共享原始对象的引用原创 2023-06-30 20:17:19 · 862 阅读 · 0 评论 -
【C/C++】类成员函数指针 定义 使用方法
类成员函数编译器会默认加上一个隐藏的参数:this指针所以定义类成员函数的指针与普通的函数指针肯定会有所区别:C++ 提供了三种运算符 ::* .* ->.用于定义和使用类成员函数指针定义类成员函数指针时,注意&和类名作用域不能省略使用指针间接调用函数优的点:调用便于分层设计、利于系统抽象、降低耦合度使接口与实现分开提高代码的复用性、扩展性。类成员函数指针是指指向类中成员函数的指针调用函数的两种方式:通过函数名直接调用通过函数指针间接调用通过函数指针调用的好处:真正的函数原创 2023-06-29 18:25:58 · 2366 阅读 · 1 评论 -
【C/C++】解析 类成员函数和this指针
类成员函数类成员函数属于类本身,在编译期间存在,并且每个类只有一份。this指针的作用:指向调用该函数的对象,函数中使用类成员都是通过this指针调用连接对象和成员函数,可以在函数中无感知的使用成员使用:可以使用 this->成员名或者省略 this-它们与是否定义对象无关,可以通过类名直接访问调用。this指针类中的非静态成员函数包括构造、析构函数,会有一个默认的隐藏的参数this 指针它是编译器默认加上的在所有参数之前,类型为当前类的指针 即:类 * const this原创 2023-06-29 15:35:04 · 405 阅读 · 0 评论 -
【C/C++】解析 类成员属性
当定义一个类时,其中的成员属性只是类的一分,在没有创建对象之前,这些属性并不存在的内存空间通过创建对象来实例化类时,每个对象都有自己独立的成员属性。在为每个对象分配内存空间时,会为对象的成员属性分配相应的内存类成员属性:属于对象,当定义对象时,属性才会真正的存在(在内存中分配空间),才开辟对应的空间多个对象会存在多份的成员属性(表现为在内存中的地址不同),彼此独立,互不扰原创 2023-06-29 14:45:45 · 278 阅读 · 0 评论 -
【C/C++】使用类和对象 设计点和圆的关系案例
点和圆的关系可以有以下几种情况点和圆的关系点到圆心的距离 == 半径 点在圆上点到圆心的距离 > 半径 点在圆外点到圆心的距离 < 半径 点在圆内点到圆心的距离 == (x1-x2)2 +(y1-y2)2与 m_r2注意类声明顺序如果一个类使用了另一个类定义对象,被包含的类的声明顺序应该在包含他的类之前定义class CPoint 点类 需要在CCricle使用CPoint定义对象之前 CPoint m_Center; //圆心坐标否则会出现m_Center是未知重写说明符的编译错误原创 2023-06-28 21:48:06 · 419 阅读 · 0 评论 -
【C/C++】使用类和对象 设计立方体案例
设计立方体类,求出立方体的面积和体积分别用全局函数和成员函数判断两个立方体是否相等创建立方体类根据题目,先创建一个立方体类,属性有立方体的长、宽、高并且为了实现“可控制的访问”,将属性的访问权限设置为private如果直接设置成公有的,别人随意就能修改创建类行为函数一个完整的类是由属性和行为共同组成的,接下来根据题目要求创建行为函数计算立方体的体积在主函数中使用CCube立方体类创建两个立方体对象,再通过调用类成员函数setCube()设置立方体的长、宽、高调用类成员函数get原创 2023-06-27 20:46:28 · 544 阅读 · 0 评论 -
【C/C++】使用类和对象 练习EasyX图形库
介绍过类和对象后,本文将通过类和对象的角度再次使用EasyX图形库,进行简单的练习,封装一个游戏人物—属性、行为等原创 2023-06-25 22:11:49 · 427 阅读 · 0 评论 -
【C/C++】使用类和对象 封装链表
C++中的结构体和类很像,也可以有构造—析构函数,也有访问修饰符,继承、多态等。类成员属性、方法默认是私有的(private),而结构体默认是公有的(public)一般情况,使用类来描述功能实现,而结构体通常只是纯粹的表示数据。链表有复杂的数据、很多的方法一般定义成类,而节点只是描述了持有数据的类型和指向一个节点的指针,一般被定义为结构体。在介绍过类和对象后,本文将通过类和对象的角度,将链表的一些基本功能封装成类原创 2023-06-25 17:32:02 · 600 阅读 · 0 评论 -
【C/C++】构造函数与析构函数
构造函数: 其作用是用来初始化类成员属性。空类中存在一个默认的无参数的构造,函数名为当前类名,无返回值(并不是返回空void,而是没有返回值!)析构函数:与构造函数相对应的析构函数,其作用是回收类中成员申请的额外空间,而不是对象本身!空类中存在一个默认的析构函数,函数名为~类名,无返回值,无参数。析构函数在对象的生命周期结束的时候,自动调用,编译器提供的默认析构函数函数体代码也为空我们可以手动重构,一旦重构,编译器就不会再提供那个默认析构了,与构造不同的是析构函数只允许存在一个!原创 2023-06-24 22:14:31 · 734 阅读 · 0 评论 -
【C/C++】详解 类和对象的概念、基本用法
C++ 是一门面向对象编程的语言,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为,更注重的是程序的整体设计。在C语言中,程序一般是由数据和算法组成,数据和算法彼此独立,关联性不强;而在C++中将相互关联数据和算法封装起来,形成结构体或类,无论类还是结构体都是一个抽象的概念只有定义类的变量时,数据才会真实存在,这个变量我们称之为对象原创 2023-06-22 00:13:52 · 2536 阅读 · 0 评论 -
【C/C++】引用(&)的概念和用法
引用就是对一块已存在的空间(变量)起了一个别名指针存在空指针; 而定义了引用就要初始化,不存在空的引用! 错误写法: int &c;指针的指向可以改变; 引用了某个空间,引用的指向不能再改变 错误写法: int c = 12; b = c;与指针不同的是,指针可以有多级,引用只能有一级 错误写法: int a; int& b = a; int& c = b; 不能定义一个指向其间接引用的引用指针变量额外占用空间;引用不额外申请空间。引用与原变量指向同一块内存空间,对引用操作就是对原变量进行操作原创 2023-06-14 22:50:15 · 3225 阅读 · 1 评论 -
【C/C++】关键字nullptr详解 | NULL与nullptr的区别
在C++中,引入了一个新的关键字——``nullptr``,用来代替旧版本的`NULL`,在函数重载中,宏替换NULL和整型0造成歧义 需要nullptr代表空指针而非整型0 关键字nullptr提高了程序的类型安全性和可读性,与NULL宏定义相比,具有更强的可靠性和扩展性。 三、NULL和nullptr的区别✧ NULL和nullptr都能当作空指针进行使用,他们之间本质的区别是什么呢? NULL是一个宏,替换的是0 ,而nullptr是关键字,代表空指原创 2023-06-12 16:31:37 · 7351 阅读 · 2 评论 -
【C/C++】详解 函数重载和应用
函数重载是指在同一个作用域下, 函数名相同 ,参数列表不同(类型、数量、顺序) ,返回类型可同可不同的函数- 重载的函数在调用时,可以根据实参自动去匹配对应的函数- 对于`指定函数参数默认值后`导致`参数列表相同`的重载函数,主函数调用时只需要对要调用的函数进行`局部函数声明`- 函数重载可以提高代码的可读性,使得代码更加清晰明了原创 2023-06-11 20:37:15 · 1245 阅读 · 0 评论 -
【C/C++】函数参数默认值
使用函数参数默认值,可以使得某些参数可以在调用函数时省略,使用预设好的默认值。设定函数参数默认值时,要注意以下几点:在函数调用如果不想采用默认值,则需要显式地提供参数值!如果函数有多个参数,从右向左依次指定默认值,中间不能有间断!一般只在声明处指定一次,否则会产生二义性错误!原创 2023-06-10 18:27:31 · 5055 阅读 · 0 评论 -
【C/C++】带你快速掌握 使用—增强for(范围for循环)
增强for循环可以遍历支持迭代器容器类型或数组类型,在`增强for循环`中,我们不需要再通过计算数组长度遍历数组,`增强for循环`会自动根据数组长度将数组中的每一个数据赋值给同类型的`val`,我们只需要输出`val`就遍历了数组`iterable`不止可以为数组,还可以是迭代的对象(比如支持begin、end操作的容器、string类型等)原创 2023-06-10 15:19:59 · 2132 阅读 · 1 评论 -
【C/C++】基础知识之string字符串
1.修改字符2.比较字符串二、C++中的字符串1.修改字符2.字符串比较3.字符串拼接4.字符串截取5.字符串长度(大小)6.字符串转换为const char*并返回三、C语言和C++中字符串的各种区别原创 2023-06-06 21:57:58 · 591 阅读 · 0 评论 -
【C/C++】基础知识之bool布尔类型
在现代的C++标准中,可以使用bool类型代替BOOL类型,因为bool更好地表达了真/假这个概念,并且在运行时使用bool类型需要更少的内存本质: BOOL是整型的别名 typedef-而bool 是关键字BOOL 定义变量申请空间大小4字节bool 1字节原创 2023-06-05 23:25:31 · 1905 阅读 · 0 评论