- 博客(21)
- 收藏
- 关注
原创 C++ -- 类和对象(中2)
在C++中,为了增强代码的可读性,支持运算符重载的操作。这么写的问题来了,成员变量如果都是私有的,在类外就访问不到。这里还要强调,在类里的重载函数的参数有一个隐藏的this指针,为了保证参数和操作数数量一致,就得改变写法。将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数。上面我们比较了引用和传值在效率上的差距,那引用就是没有问题的吗?隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。因为在全局的会和编译器生成的冲突,当成规定记住就行。
2025-04-29 18:16:34
746
原创 C++ -- 类和对象(中1)
d相当于d1的拷贝,在这个过程中又重复了自定义类型调用拷贝构造函数。于是后面就开始循环这个过程了。再用上面的另一段代码来演示这个过程来方便理解:可以把**“自定义类型传值调用需要调用拷贝构造函数”**这句话当成规则,验证的方法是f11上面这段代码,程序最开始不会进入func而是进入拷贝构造函数。如果想避免这种情况发生,最好的办法就是传地址。C++中喜欢用的是引用。
2025-04-23 18:27:19
583
原创 C++ —— 类和对象(上)
在上面的代码中已经体现了类的定义方法class name //类名// 成员变量 成员函数//注意分号如果类的声明和定义不在一起,在调用时需要加上作用域操作符// .hpublic:private:int* _a;int _top;成员变量的声明是表明类型、名字class Tpublic://...private:int _a;//成员变量的声明int _b;//成员变量的声明成员变量的定义是在开辟空间时实现的。
2025-04-20 15:41:18
863
原创 C++学习记录
这个方法就是使用namespace关键字。定义命名空间,需要使用namespace关键字,后面写上命名空间的名字和一对{}。还是以刚才的代码为例。有意思的是,如果我们的空间名字重复,就可以改用套娃的方式 来命名。例如这样。
2024-07-26 22:54:35
971
原创 直接插入排序和希尔排序
直接插入排序难度不大,重点是弄清楚单次循环中的开始位置和结束位置以及弄清楚多次循环和单次循环的联系。希尔排序作为一种经典的排序算法,它更像是直接插入排序的更高级,在处理庞大数据时颇有成效。当我们理解了直接插入排序再来学习希尔排序简直如虎添翼。
2024-07-19 19:47:31
567
1
原创 数据在内存中的存储
其次,我们知道char类型占用1字节(8比特),有符号的char可以表示127(01111111)~-128(11111111);在数值前面增加了一位符号位(即最高位为符号位),正数该位为0,负数该位为1,其余位表示数值的大小。对于64位环境下的浮点数,最高的1位存储符号位,接着的11位存储指数E,剩下的52位存储有效数字M。对于32位环境下的浮点数,最高的1位存储符号位,接着的8位存储指数E,剩下的23位存储有效数字M。对于负数,其补码为反码加1,还是以‘-1’为例,其补码为。
2024-02-21 20:15:41
1568
1
原创 字符函数和字符串函数
strstr的作用是返回str2在str1中第一次出现的位置,过程中不包括'\0’,但以此为停止。这个函数的作用是将source指向的字符串复制到destination指向的字符串。该函数可以把参数部分错误码对应的错误信息的地址返回来。这里的大小不是字符串的长短,而是对应位置上的字符大小。二)拷贝源头字符串的数据空间的“\0"及后面空间。利用指针遍历数组的每个成员,当遇到“\0”时停止,返回计数。,这个参数的意义是让我们主动选择要复制、追加、比较的字符数。一)找到目标空间的"\0"以上函数都包含在头文件。
2024-02-20 16:33:31
559
1
原创 switch语句
expression的不同值,执行对应的case分支,如果找不到对应的case,则执行default。观察上面的代码,如果我输入“7”,则输出“星期7”。同样是上面的代码,这回我想在输入1-5时输出“工作日”,在输入6-7时输出“休息日”如果输入的值不在给出的范围内,则可以用default来反馈结果,还是上面那个代码。当我输入的值>7时,default执行。作用是:永久终止循环,只要break执行,直接就会跳出循环,继续往后。我可以使用上图的代码实现想要的效果,但我还可以精进一下,如下图。
2023-11-06 20:47:04
96
2
原创 关于一些操作符
后置++则i= a =0,表达式判断为假,则不进行后面的&&,即在a这里短路。输出结果为a = 1,b = 2,c =3,d = 4。C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。利用并且操作符,当age>=18时,判断为真,则进行表达式2的判断,若表达式1为假,则不执行。如前面判断冬天的表达式,若month为12,则不进行后面两个的判断,即在12这里短路。如果写成if(x = 3),则返回值始终为非0(真)可当我们输入16,结果也为“青年”,为什么呢?
2023-10-24 09:27:06
55
2
原创 if语句的一些理解
在这段事例中,通过向左对齐,使得(1)和(3)对齐,误以为其为一对的if else,这样运行无疑会报错。这里,if和else可以构成一种分支语句,当要处理的事或物不是简单的直线时,可以用if else作出多条选择。eg.小明是一名学生,从他家到学校有两条小吃街,两条街都可以到学校,两条街上都有小明爱吃的早饭。逐条理解:开始是将5赋值给n,进入if语句,满足“n>=5”,执行n++,(2)中,对于小明吃的什么早点,就是建立在街的前提下的分支选择。在预测中,输出结果为“哈哈”,但实际不是,为什么呢?
2023-10-23 20:33:42
124
原创 对printf的一些理解
其中“int n = 10”是在给变量n初始化,因其为整形,整形的占位符为“%d”,在输出时会被n替换。%c—字符 %d—整形 %f—浮点型 %lf—双精度浮点型 %s—字符串 %p—指针……原因是,当输出的值不足[m]时,会自动用空格补齐。当我们先出类似的代码是,小数点后面会自动补齐六位数,如果我们想要得到指定几位数,可以这样做。可以看到,在“0.50”前多了两个空格,“6”限定宽度,其中注意小数点也算做1宽度。显而易见我在“5”前加了负号,这时候输出的结果为“12300”(0代表空格)。
2023-10-22 13:07:04
266
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人