- 博客(9)
- 收藏
- 关注
原创 C++:模板初阶
在上面的代码中,我们注意到<>中的typename变成了class,在C++模板编程中,typename和class均用于声明模板类型参数,但二者在语义、使用场景和代码意图上存在细微差异。至于具体是什么,我们以后会介绍。解释:例如Swap函数的调用时,编译器会因为第一个传参的类型将两个参数推导成int类型,而到第二个传参时,又会将两个参数推导成char类型,这样就造成了推导逻辑错误。类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。
2025-12-09 17:04:19
416
原创 C++内存管理
new:它会根据要创建的对象类型,自动分配恰当大小的内存,并且返回正确类型的指针,无需进行强制类型转换,具有更好的类型安全性。operator new与malloc的关系是:operator new底层是使用malloc来实现的,但是operator new在报错时就会抛异常(我们可以捕获)。注意点:new和delete的个数类型一定要匹配(如:new int[10]对应delete[10])!(可以直接全部扔进去)new:默认情况下,当内存分配失败时,new会抛出std::bad_alloc异常,
2025-11-24 21:17:42
664
原创 C++类与对象(下)
• 内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其。引⽤成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进⾏初始化,否则会编译报错。3. C++11⽀持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显⽰在初始化列表初始化的成员使⽤的。2. 友元类的关系是单向的,不具有交换性,⽐如A类是B类的友元,但是B类不是A类的友元。
2025-11-22 21:43:46
533
原创 C++(中下)
像Stack这样的类,虽然也都是内置类型,但是_a指向了资源,编译器⾃动⽣成的拷⻉构造完成的值拷⻉/浅拷⻉不符合我们的需求,所以需要我们⾃⼰实现深拷⻉(对指向的资源也进⾏拷⻉)。3. 没有显式实现时,编译器会⾃动⽣成⼀个默认赋值运算符重载,默认赋值运算符重载⾏为跟默认拷⻉构造函数类似,对内置类型成员变量会完成值拷⻉/浅拷⻉(⼀个字节⼀个字节的拷⻉),对⾃定义类型成员变量会调⽤他的赋值重载。6. 传值返回会产⽣⼀个临时对象调⽤拷⻉构造,传值引⽤返回,返回的是返回对象的别名(引⽤),没有产⽣拷⻉。
2025-11-22 16:44:10
529
原创 C++类与对象(中上)
⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解⼀下即可。如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要⽤初始化列表才能解决,初始化列表,我们下个章节再细细讲解。对于带参的构造函数,在实例化对象的时候,要注意在对象的后面加上(实参1,实参2,...),否则编译器会报错。构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务。
2025-11-18 11:17:31
1002
原创 C++:类与对象(上)
类的意义:有利于系统性的建立一个逻辑体,且这个逻辑体可以通过填入具体数值来具象化,比如建立一个栈其中函数可以和变量成员可以封装在一起统一使用。1.1 类定义格式• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。•为了区分成员变量。
2025-11-16 16:39:15
429
原创 C++入门基础
为什么要在C语言之外重新创造一门语言?是为了符合什么开发需求?接下来,将为你说明C++与C的区别中体现。关键区别要点1.1. 编程范式不同- C:仅支持“面向过程”,按步骤拆解任务(比如先定义函数、再顺序调用),得自己整理一个个的结构,一步一步肝出来,开发效率低)。- C++:兼容面向过程,还新增“面向对象”(类、对象、继承、封装、多态),能把数据和操作打包成“模块”(比如用“学生类”管理姓名、成绩和相关方法),更易维护复杂代码。
2025-11-16 11:32:50
682
原创 c语言中的文件操作
1.函数功能:在流中读取指定个数的字符串,并存储入指定的空间(读到换行符(也会包括,前提是不会大于num-1),文件末尾,指定个数(包括\0)就会停止)(文件中全是字符,没有\0,\n,或者说是不起作用,它们可以理解成隐形包含)该结构体类型是由系统声明的,取名 FILE.我们写的程序中使用的数据是储存在内存中,如果程序因为任何情况关闭,内存回收,那么数据就会丢失,我们再次打开程序时,就看不到上次的数据,如果要持久化保存,我们可以使用文件。2.发生错误,函数返回EOF,设置流的错误指示器(ferror)
2025-11-05 19:41:22
504
原创 结构体:自定义之开始
在实际编程中,我们往往会希望有一个集合体来包括我们需要的数据类型来对应实际情况,以实现数据应用方便,例如一个学生的名字(字符串),年龄,成绩(整型),等等当后续要应用相同模板时就可以直接定义调用。
2025-10-13 22:04:06
344
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅