自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 初始化列表

虽然上述构造函数调用之后,对象中已经有一个初始值,但是不能将其称为对对象成员变量的初始化,因为初始化只能初始化一次,但是构造函数体内可以多次赋值。④尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化。所以,需要在初始化列表中初始化。:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。⑤成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关。

2024-06-12 16:10:54 324

原创 运算符重载

此时用户再在类外自己实现一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是类的成员函数。当运算符重载函数放到类内时,就要改变其形参个数,否则就会造成参数过多的现象,在形参部分给一个参数即可,比较的对象就是当前调用这个函数的对象即【this。定义一个函数,当遇到该运算符时,编译器会自动调用该函数来执行相关的运算功能。注意:内置类型成员变量是直接赋值的,而自定义类型成员变量需要调用对应类的赋值运算符重载完成赋值。,其返回值类型与参数列表与普通的函数类似。

2024-06-10 15:04:31 302

原创 构造函数、析构函数和拷贝构造

但是: main函数中不能直接调用Time类的析构函数,实际要释放的是Date类对象,所以编译器会调用Date 类的析构函数,而Date没有显式提供,则编译器会给Date类生成一个默认的析构函数,目的是在其内部 调用Time类的析构函数,即当Date对象销毁时,要保证其内部每个自定义对象都可以正确销毁。而_t是Time类对象,所以在d销毁时,要将其内部包含的Time类的_t对象销毁,所以要调用Time类的析构函数。关于编译器生成的默认成员函数,不实现构造函数的情况下,编译器会 生成默认的构造函数。

2024-05-21 19:23:36 444

原创 内联函数(补充)和auto关键字

在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一 个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。3.内联函数的声明和定义不可分离。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调 用建立栈帧的开销,内联函数提升程序运行的效率。

2024-05-19 22:44:54 409 1

原创 引用、内联函数

2. inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建 议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不 是递归、且频繁调用的函数采用inline修饰,否则编译器会忽略inline特性。以值作为参数或者返回值类型,在传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量的一份临时的拷贝,因此用值作为参数或者返回值类型,效 率是非常低下的,尤其是当参数或者返回值类型非常大时,效率就更低。

2024-04-10 23:28:20 1321 1

原创 命名空间、缺省参数和函数重载

是许多编程语言使用的一种代码组织的形式,通过命名空间来分类,区别不同的代码功能,避免不同的代码片段(通常由不同的人协同工作或调用已有的代码片段)同时使用时由于不同代码间变量名相同而造成冲突。在C++中,重载函数经过汇编后,函数的名字修饰发生改变,在连接时,就会用改变后的名字修饰去寻找函数地址。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。结论:在linux下,采用g++编译完成后,函数名字的修饰发生改变,编译器将函数参 数类型信息添加到修改后的名字中。链接:生成可执行程序。

2024-04-09 17:28:45 631

原创 库函数的功能及模拟实现(一)

strlen计算的结果是:4(a,b,c,d)strcpy用于将一个数组的字符串复制到另一数组中,例如cplusplus网站上的说明,将source数组中的字符全都复制到destination数组里,其中\0也一并复制过去。但是,要注意的是,destination这个数组的空间要足够大,能够容纳下合并后字符数组的大小。其中str1中的a和str2中的a比对,b和b对比,c和d对比,d比较大,则返回-1,得出str2比str1大的结论。比较的不是字符数组的长度,而是字符数组中对应的每个元素的大小。

2023-11-29 20:33:38 25 1

原创 getchar()的函数吸收作用

分析结果,当我们输入A和b时,我们的键盘输入“A 回车b回车”。“A\nb\n” scanf只会拿走A和b,执行到if语句时,缓冲区的\n会进入判断,故输出Consonant。只要加入getchar(),就可以拿走缓冲区里的\n。

2023-11-17 11:58:51 30 1

原创 越界问题(在特定环境下)

栈区内存一般是从高地址向低地址使用的,由于变量i先创建,数组arr后创建,所以变量i的地址高于数组arr的地址。数组在内存中随着下标的增加,地址是由低向高变化的。仅以以下代码为例进行说明。提前说明一下,以下的分析仅仅是在VS2022、X86、Debug?的环境下,如果编译器不同,最终的结果可能会有所不同。所以,随着下标的增加,越界后就有可能覆盖到i,造成死循环。下面是运行结果,很明显程序死循环了。

2023-11-11 10:00:00 26 1

原创 交换两个变量的三种方法

交换两个变量

2023-11-10 23:20:54 192 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除