- 博客(15)
- 收藏
- 关注
原创 构造函数初始化列表
尽量使用初始化列表初始化,因为那些你不在初始化列表初始化的成员也会走初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会用这个缺省值初始化。之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有⼀种方式,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。引用成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。
2024-09-07 18:13:50
159
原创 运算符重载
像Stack这样的类,虽然也都是内置类型,但是_a指向了资源,编译器自动生成的赋值运算符重载完成的值拷贝/浅拷贝不符合我们的需求,所以需要我们自己实现深拷贝(对指向的资源也进行拷贝)。3. 没有显式实现时,编译器会自动生成一个默认赋值运算符重载,默认赋值运算符重载行为跟默认构造函数类似,对内置类型成员变量会完成值拷贝/浅拷贝(一个字节、一个字节的拷贝),对自定义类型 成员变量会调用他的拷贝构造。一元运算符有一个参数,二元运算符有两个参数,二元运算符的左侧运算对象传给第一个参数,右侧运算对象传给第二个参数。
2024-08-18 17:11:52
505
原创 C++中类的定义
在C++中的“类”和C语言中的“结构体”的定义并无太大区别,类的定义同样是关键字(class)+名称+加内容。如图:但是,类允许将与类相关的函数定义在类域里,这样的函数我们可以称之为类的成员函数或者类的方法:这样就使得函数冲突的概率变得极小。C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是 struct中可以定义函数,⼀般情况下我们还是推荐用class定义类。而定义在类里面的函数默认为inline。
2024-08-10 14:08:50
475
原创 C++入门
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全 局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名 冲突或名字污染,namespace关键字的出现就是针对这种问题的。C语⾔项⽬类似下⾯程序这样的命名冲突是普遍存在的问题,C++引⼊namespace就是为了更好的解决这样的问题。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。
2024-08-02 18:33:38
675
原创 C语言程序的编译和链接
在写代码时,我们写下来的代码其实并不能被计算机直接用,而是要经过转换,转换为二进制语言。这个过程粗略的拆分的话,只有两步:编译和链接。但如果细分的话,编译又可拆分为三步:预处理、编译、汇编。接下来我会按逻辑顺序讲解这四个步骤。
2024-03-31 10:11:16
506
1
原创 C语言文件操作
要打开文件,首先要找到文件,这时就要根据文件标识来找了。而⽂件名包含3部分:⽂件路径+⽂件名主⼲+⽂件后缀例如: c:\code\test.txt 为了⽅便起⻅,⽂件标识常被称为⽂件名。到这里,文件操作的内容就讲完了,虽然讲的并不多,但内容并不简单,需要多加练习才能掌握,尤其是数量众多的函数。为了输⼊数据,打开⼀个已经存在的⽂本⽂件。打开⼀个⼆进制⽂件,在⽂件尾进⾏读和写。为了读和写,新建⼀个新的⼆进制⽂件。为了输出数据,打开⼀个⽂本⽂件。打开⼀个⽂件,在⽂件尾进⾏读写。为了读和写,打开⼀个⽂本⽂件。
2024-03-30 21:01:51
352
原创 结构体及其内存对齐
到这里这个结构体应该占用9个字节空间,但因为“结构体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍”这条规则,那么这个结构体应该占据12个字节。4. 如果嵌套了结构体的情况,嵌套的结构体成员对⻬到⾃⼰的成员中最⼤对⻬数的整数倍处,结构体的整体⼤⼩就是所有最⼤对⻬数(含嵌套结构体中成员的对⻬数)的整数倍。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的 整数倍。
2024-03-24 12:04:54
764
1
原创 数据在内存中的存储
到这里,有关数据在内存中如何存储的基本知识到这里就结束了。当然,数据存储的知识还远不止这些,如果你对这些知识感兴趣,可下去继续查找相关资料进行学习。
2024-03-19 16:35:14
699
原创 C语言之初入指针
指针,可以说是C语言的半壁江山,他和int,char,float等同属于数据类型里的一种。但与int,char等不同,她并不直接存储有现实意义的数据,而是存储某一数据的地址,进而帮助我们间接改变某一数据,甚至于帮助我们做到一些普通数据类型做不到的事情,如用自建函数返回两个以上的数据。打个不恰当的比方,指针和C语言其它部分之间的关系就像第三产业和第一二产业之间的关系。而指针数组与其说是指针不如说是数组,它是一个储存指针的数组,其基本形式为——int * p[5] ={&arr[0],&arr[1],……
2024-03-09 21:43:19
425
1
原创 C语言分支与循环(2):switch语言
在switch分支体系中,“switch”后的括号里的内容为分支判断条件的前半段。另外需要注意的是:每条分支后的“break”不要忘记,因为“case”本身只充当分支入口的作用。执行完本分支内容后想要跳出分支就必须要用到“break”,否则编译器就会开始执行下一条分支的内容,直到在其他分支遇到“break”或者把该分支之后所有分支的分支内容执行完。switch语言与同样作为分支语言的if语言有很大不同,他的形式相对于if语言简单了许多,这让它编译起来简单的同时也丧失了很多功能性。二.switch语言。
2024-01-26 23:10:15
675
1
原创 C语言分支与循环(1):if语言
其中if后括号里的内容是判断条件如果成立则返回一个“1”填入括号内,反之则返回一个“0”填入括号内。如果返回的是“1”则执行该分支中的“{}”里的内容,执行完毕后跳过该分支体系中的其他分支;如果返回的是“0”则跳过该分支“{}”里的内容进行下一分支的判断,直到完成该分支体系。3.如果有多个判断范围,则可以多用几个“else if”。其中的分支语言能够帮助代码在不同的变量情况下走向不同的方向,使得代码能适应真实情况,灵活多变。需要注意的是:1.如果“{}”内只有一条内容可以省略掉“{}”,但该条内容后的“;
2024-01-25 19:17:01
583
原创 C语言逻辑符号与数学逻辑符号的联系
2.而C语言符号“=”在C语言所起作用为赋值,即将“=”右侧的值从右向左依次赋给左侧的变量,在C语言中起到与数学符号“=”相同作用的C语言符号是“==”。与之相对应的,C语言符号“!=”和数学符号“≠”所起作用相同,“<= >=”等C语言符号和数学符号“≤ ≥”所起作用相同。在C语言的入门过程中如我们能将C语言逻辑符号和我们学过的数学逻辑符号进行关联记忆,很有可能会起到事半功倍的效果。在C语言的学习过程中,我们经常会用到一些逻辑符号,接下来我就来浅浅探究一下C语言逻辑符号与数学逻辑符号的联系。
2024-01-24 21:58:19
540
原创 有关形如 b = ++c, c++, ++a, a++ ;和 b+= a++ + c ;的赋值的思考。
*计算结果:a = 8 b = 7 c = 8。该赋值过程中同样遵循 从右向左赋值 且 c++ 和 a++ 在 b 被赋值之后才进行。b/*b=7参与计算*/ += a++/*a=8参与计算*/ + c/*c=8参与计算*/;//该计算式表示:b=b(=7)+a(=8)+c(=8) 且计算完毕后 a+1。也就是说 c++ 和 a++ 在 b 的复制过程中所发挥的作用就相当于 c 和 a。//计算结果:a=6 c=6。
2024-01-20 20:17:29
397
原创 自我介绍和未来规划
我学习编程并没有太大的目标,现阶段就是为了自己能搞一些实用的小程序出来和参加比赛获奖来拿一些学分,因为我自身也没定好我是要走偏软件的方向还是要走偏硬件一点的方向。在大二之前,我准备先将C语言和数据结构和算法进行充分学习,并开始对C语言的学习。放假时,我准备一周至少投入20个小时的时间进行编程的学习,开学后我也要保证至少十个小时的学习时间。我是一名来自河南理工大学的大一学生,我所在的专业是电子信息工程。总而言之,刚入大学的我现在还在摸索着学习的目标和方法,我希望能几块把这些基础的东西确立下来。
2024-01-17 12:56:44
338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人