C++自学指南
文章平均质量分 82
本篇专栏主要讲述C++语言的特点、语法知识以及一些常用技巧。深入浅出的带你全方面了解C++。本篇文章是建立在对C语言语法有基本的认识的基础上。
国腾精英
这个作者很懒,什么都没留下…
展开
-
C++ string类
Linux的g++当容量值n > 字符串长度size;进行缩小,缩小的大小满足扩容的整数对齐当扩容值n < 字符串长度size;进行缩小但不会小于size,依然满足扩容的整数对齐。原创 2024-08-11 17:05:57 · 1146 阅读 · 0 评论 -
STL简介
STL是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原创 2024-08-10 10:30:00 · 530 阅读 · 0 评论 -
C++模版
class 类模板名// 类内成员定义// 一个简单的Stack类模板public:,_size(0){}~Stack()private:T* array;// 模板不建议声明和定义分离到两个文件.h 和.cpp,这样会出现链接错误template // 模板只是一个模具,不是类型,重名不会报错template指明的模板只能支持相邻的下一个语句使用,后面如果需要得重新指明。如上面的声明和定义分离,定义的时候就重新再指明了模板,否则将会报错。原创 2024-08-09 13:30:00 · 668 阅读 · 0 评论 -
CC++ 内存管理
这是new/delete 和 malloc/free最大区别就是new和delete对于自定义类型除了开空间外,还会调用自己的构造函数和析构函数。int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】// 除了开空间外,还会调用构造函数和析构函数// 动态申请一个A类型的空间并自动调用拷贝构造初始化为10。原创 2024-08-09 10:30:00 · 1614 阅读 · 0 评论 -
C++ auto关键字
C++中有很多很长的类型,那么作为一个优秀的编程语言肯定会想办法便利程序员开发。在C语言中typedef给类型取别名,但是typedef还是有很多不足,比如我只用一次该类型,那么typedef重命名就有点多余了。C++11标准中将auto赋予新的含义,也可以完成这一功能。原创 2024-08-08 10:00:00 · 400 阅读 · 0 评论 -
【C++语法糖】范围for
C++11标准后引入了范围for,这个范围for是一种语法糖,来简化代码书写。下面是简单遍历数组的一段简单代码但是如果将数组换成不连续存储的链表list,就不能使用上面的方式,得用迭代器。我们可以看到这段代码还是相对比较麻烦的,C++11以后引入了范围for的语法糖就大大简化了上面的代码。原创 2024-08-08 13:30:00 · 1725 阅读 · 0 评论 -
类和对象(下)
上篇类和对象(中)已经介绍了六种默认构造函数,这篇主要是对类和对象的补充,如构造函数中的初始化列表、explicit的使用、static使用以及编译器对对象构造时的优化等等。原创 2024-08-07 17:00:00 · 683 阅读 · 0 评论 -
类和对象(中)
默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成一下6个默认成员函数初始化和清理和拷贝赋值比较重要,取地址重载不重要,C++11还增加了两个默认成员变量,移动构造和移动赋值。但是,大多数情况下,编译器是无法自动生成与我们需求完全一致的默认成员函数,这就需要我们自己来进行编写。原创 2024-08-07 12:49:33 · 1055 阅读 · 0 评论 -
类和对象(上)
class为定义类的关键字,Stack为类的名字(自定义),{}中为类的主体即一个类域,注意类定义结束时后面分号不能省略(与struct一致)。类体重内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加"_"或者"m"开头,具体编码风格看公司要求。C++中的struct也可以定义类,是一个公共类,C++兼容C中struct的用法,同时struct升级成了类。原创 2024-08-06 13:00:00 · 2118 阅读 · 0 评论 -
C++引用
引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。类型& 引用别名 = 引用对象;int a = 10;int& b = a;原创 2024-08-06 09:00:00 · 359 阅读 · 0 评论 -
C++空指针(nullptr)
nullptr是一种特殊类型的字面量,它可以转换成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,而不能转换为整型类型。通过 f((void*)0) 我们可以知道C++对指针类型转换比较严格,无法将 void* 类型转换成 int*。 在C语言中我们把空指针定义成NULL,但是这在C++中会有所问题,因为C++对指针类型转换比较严格。如此可知,C++中NULL被定义为字面常量0,C中NULL被定义为无类型指针(void*)的常量。原创 2024-08-05 17:04:27 · 491 阅读 · 0 评论 -
C++函数重载
在识别函数声明是否相同时,并不考虑 const 和 volatile 修饰符。②如果形参。原创 2024-02-25 09:00:00 · 464 阅读 · 0 评论 -
C++缺省函数
C++增对C语言的函数引入了缺省的概念,即可以直接在形式参数中定义赋值,若实际参数未传输数值,则直接采用形式参数的数值。原创 2024-02-24 20:30:00 · 179 阅读 · 0 评论 -
C++:inline函数(内联函数)
C++中inline来替代宏函数。原创 2024-02-24 10:00:00 · 2043 阅读 · 0 评论 -
C++ 域
所以从上可知局部域和全局域除了会影响编译查找逻辑(就近原则),还会影响变量的生命周期(一般以一对 “{ }” 所在的区域为生命周期)。 C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑,局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。原创 2024-08-05 16:58:57 · 249 阅读 · 0 评论 -
C++的命名空间(namespace)
其分为两种情况:1、引入头文件中namespace所自定义空间名字相同时,命名空间中成员名称无重复,那么他们会合并为一个命名空间,编译通过2、引入头文件中namespace所自定义空间名字相同时,命名空间中成员名称有重复,那么程序会在链接时报错。因为连接器会检测到重复定义的变量结论:重复定义只针对有内存操作的变量等相关定义,命名空间定义没有内存相关操作,所以不存在重复定义问题。原创 2024-02-23 09:00:00 · 562 阅读 · 1 评论