
C++初阶
文章平均质量分 88
计算机科学与技术-欧阳彪
c/c++方向一位努力学习的前行者。目前专栏开设了:《编程tool》分享一些常用编程软件的安装配置和使用。《C语言初阶》《C语言进阶》由浅入深的分享了C语言的知识,《linux》分享关于操作系统的知识,《数据结构与算法》主要分享关于C语言数据结构的知识和学习经验,此外还穿插了人工智能,云计算虚拟技术和算法的相关知识。喜欢和大家交流学习,希望能得到大家的多多指教
展开
-
【C++初阶】string①:管理char的字符数组是一个模版(快速上手使用)
当string的数据小于16的时候就会将数据存储到buff这段空间,但是最多存15个,还有一个\0,如果大于15就存储在ptr对象中,减少去堆上开小空间。如果大于15个直接存ptr设计大概为这样:private:但是并不是所有的设计都是这样,string的大小所以是不确定的,在linux下string可能是8z字节private:linux默认64位,只有一个指针是八字节实际G++下的string是这样的:原创 2025-03-09 16:22:19 · 1601 阅读 · 0 评论 -
[C++] STL
我们 学习STL要阅读部分源代码, 主要参考的就是这个版本。Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意 运用、拷贝、修改、传播、商业使用这些代码,无需付费。由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低, 符号命名比较怪异。由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。原创 2025-03-02 18:36:53 · 130 阅读 · 0 评论 -
【C++初阶】模版初识
在我们写排序的时候时常会用到要交换两个数据的场景:函数模板格式T的位置可以自己命名。那么对于不同类型使用的时候: 这里函数模版的typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替clas 不能一个模版参数推导成两种类型:比如:解决方式:第一种就是将上述模版参数修改成两个。第二种方式使用强制类型转换: 第三种:以上使用的方式都叫做推演实例化,通过实参传递,去推导模版参数的类型,生成对应的函数。还有一种方式显示实例化:真正原创 2025-03-02 15:38:20 · 512 阅读 · 0 评论 -
【c++初阶】C++内存管理
C++的内存管理和C语言基本是一致的,划分区域:不同的数据存储要有不同的性质,满足不同数据的不同的存储需求。临时用:栈区动态使用需求:静态区(常见的数据结构,需要动态开辟一些空间)只读数据:常量 可执行代码(二进制指令) 常量区数据一般不可修改:因为常量区代码一般是编译好的指令,防止运行程序被修改,安全性就不可靠了。平时写的代码是存在磁盘上的。globalVar在哪里?_全局变量在静态区 staticGlobalVar在哪里?_静态变量在静态区。原创 2025-03-02 13:43:57 · 1100 阅读 · 0 评论 -
【c++初阶】类和对象④
目录1.const成员函数:2.取地址运算符重载:3.再谈构造函数----初始化列表4.static成员5.匿名对象6.静态成员函数:static 成员函数的调用静态成员的实战:7.explicit关键字8.友元函数:9.友元类:10.内部类:补充:编译器对构造时的优化:和编译器有关(不同的编译器可能有不同的行为)①连续的构造+构造②传值传参下的优化:③返回值下的优化: 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数 隐含的this指针,表明在该成员函数原创 2025-02-27 16:35:01 · 836 阅读 · 0 评论 -
【C++初阶】类和对象③之运算符重载--从日期类推广自定义类型运算的方法奥秘
内置类型能够使用的原因也是因为库里面已经写了实现了。c++输入输输出支持自动类型识别也是因为: 函数重载,参数匹配。原创 2025-02-17 21:51:19 · 1135 阅读 · 0 评论 -
【c++初阶】类和对象②默认成员函数以及运算符重载初识
默认的拷贝构造函数对象按内存存储按 字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。注意:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定 义类型是调用其拷贝构造函数完成拷贝的。原创 2025-02-15 10:43:56 · 1125 阅读 · 0 评论 -
【C++初阶】类和对象①
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。特点:①类名就是类型②类里面可以定义函数成员函数如果在类中定义,编译器会将次函数当做内联函数进行处理。类的定义的惯例中,成员变相的定义一般为私有也加做类的声明与定义分离。也支持混合,一些定义和声明分离,部分不分离。原创 2025-02-13 11:37:05 · 1346 阅读 · 0 评论 -
【C++初阶】基于范围的for循环&&指针空值nullptr
我们一般写for循环是这样的方式:在c++11中引入了范围for的概念,先不说范围for是什么样,我们先来看一下范围for的使用效果:范围for:对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因 此C++11中引入了基于范围的for循环。for循环后的括号由冒号“ :”分为两部分:第一部分是范 围内用于迭代的变量,第二部分则表示被迭代的范围。原创 2024-05-27 15:20:01 · 518 阅读 · 2 评论 -
【C++初阶】auto关键字
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一 个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。补充:typid(),用于打印变量的类型编写如下代码:所以结论:auto关键字可以自动推导类型。原创 2024-05-27 13:38:38 · 488 阅读 · 0 评论 -
【C++初阶】宏与内联函数
inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建 议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不 是递归、且频繁调用的函数采用inline修饰,否则编译器会忽略inline特性。在生成可执行程序的过程中,编译的第一步就是预处理,预处理的步骤诶头文件的展开,宏的替换,条件编译,去掉注释。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数可以提升程序运行的效率。原创 2024-05-27 11:02:03 · 871 阅读 · 0 评论 -
【C++】引用
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。简单说引用就是取别名,比如孙悟空,齐天大圣、弼马温、猴子、美猴王都是说的孙悟空一样。原创 2024-04-06 20:10:51 · 924 阅读 · 7 评论 -
【C++】缺省参数和函数重载
因为害怕函数声明的时候是一个参数值,函数定义的时候又是一个参数值,没有办法有一个标准但是也不能定义是缺省参数,函数声明没有, 所以如果声明和定义分离,只能在声明地方给缺省参数。因为有些地方只用到函数的声明,所以以声明为主,然后定义可以不用给。缺省值一般是常量或者全局变量,但是一般是变量 ,c语言不支持缺省。原创 2024-04-06 13:49:42 · 867 阅读 · 3 评论 -
【C+ +】第一个C+ + 项目的创建及namespace命名空间解释&C++中的输入输出
二者不同的点:头文件不同这个可以理解因为可能包含了我们输出输出函数的不同要包含不同的头文件,突兀的是这一行代码:这个是什么含义呢?有什么用是干什么的?这是我们进入c++的第一个问题。c++语言是c语言生长起来的, 兼容百分之九十的c语言,所以我们在c++中仍然可以使用c的代码:只是一些细节不兼容。c++是面向对象的语言,具有泛型,弥补c语言的不足,那么这个就是为了弥补c语言中一些命名冲突而诞生的我们称为命名空间。接下来我们就详细聊一下这个命名空间。2.命名空间2.1 C++关键字。原创 2024-04-03 19:01:57 · 1199 阅读 · 2 评论 -
【C+ +初阶】前言篇章---C+ +的广袤
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机 界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言 应运而生。 1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一 种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而 产生的,它既原创 2024-04-02 23:08:27 · 1509 阅读 · 1 评论