- 博客(28)
- 收藏
- 关注
原创 C++_CH19_继承
面向对象编程是一个巨大范式,而继承则是一个基本的方面。继承允许类有一个相互关联的层次结构。即允许一些子类有一些公共的功能(基类),又有自己的部分。可以帮助我们减少代码的重复。
2024-09-24 23:50:21 161
原创 C++_CH18_构造函数与析构函数
在编写类的时候,C++编译器会默认生成6个默认的函数,但是不显示出来:需要关注以下两个方面:2 构造函数构造函数是一种特殊类型的方法,他在类的实例化时被使用。创建一个Entity类,并给他写一个method,Print(),这样实例化后,调用Print就可以将x,y的值打印到控制台:在低版本的编译器中,得到的输出是两个随机值,当然现在的编译器得到的结果是因为X、Y是public的,因此我们可以打印X,Y试试还是对于高版本的编译器,输出为但是对于低版本的编译器,则会报错:未初始化局部变量。默
2024-09-20 22:30:22 386
原创 C++_CH16_Local static
变量是有作用域的,比如函数可以是一个变量的作用域。能在整个工程使用的变量叫全局变量,其余的叫局部变量。举个例子11111这是因为,每次调用printf(),i的值都被重新更改为了0。
2024-08-30 14:03:55 183
原创 C++_CH15_static在类和结构体中使用
在类或者结构体中使用static关键字,那么之后所有的instance,全部指向的同一块内存空间。在这个时候创建实例就没有意义。比如我创建了两个instance,e1和e2.由于他们指向同一块内存空间,所以修改e2的值也会带动e1的值修改。
2024-08-30 11:45:19 443
原创 C++_CH14_static在类和结构体外使用
一种是在类和结构体外面的static,一种是在类和结构体里面的static。在类和结构体内部声明static,将使得class和struct与他们的instance共用内存。本文只讨论在类和结构体外的static。
2024-08-28 16:55:40 261
原创 C++_CH13_面向对象编程
类(class)是数据和操作的组合。我们以游戏角色为例,创建一个类KIMI叫player这个class的一个实例(instance)对instance内部修改,用 instance.xxx的语法。但是该段代码报错,是因为x,y这样的class内部的东西,没有被声明是全局的,他只在class player内部起作用。因此我们要加上public有了player,我们就可以写player的移动函数。此时已经在class内了,所以player都可以删掉。
2024-08-28 15:43:26 260
原创 C++_CH09_循环
这段代码当然是打印五次。但是这段代码真正的核心是:int i = 0是在for循环开始时被执行一次,i++是在结束for循环时所执行。虽然看起来很怪,但是运行结果完全一样。
2024-08-27 18:12:23 281
原创 C++_CH08_条件分支语句
C++的条件分支和C差不多。具体的可以看我的C语言博客。这里我们只介绍bool类型的引用output相等可以简化:(仅限if中只有单行语句)
2024-08-26 16:06:54 137
原创 C++_ch07_visual studio调试代码
断点就是程序执行到这里就会暂停,一个程序可以设置很多短点。在visual studio中只需要点击侧栏就可以设置断点。点击左边的栏目,出现红点就是设置的断点。另外要确保打断点的位置必须是可执行的代码,不然断点就没有意义。此外,打断点必须是在Debug模式下进行。这样才有意义。断点方便我们逐行执行代码,并观察问题出现在哪里。
2024-08-26 15:33:16 442
原创 C++_CH06_头文件
类似函数,也是避免我们不断地复制粘贴。为什么要复制粘贴?我们在一个project当中新建了两个文件记住这两个文件:math.cppbuild以下project,运行:会发现报错。原因是在main.cpp中,它不知道Log()是什么。在链接器章节我们讲到,这样会产生LINK ERROR。这样才不会报错。但是如果我们一个项目里有很多个文件,并且有多个函数需要声明,我们会陷入复制粘贴的魔咒。因此我们需要头文件集成所有声明。
2024-08-25 23:08:55 439
原创 C++_CH04_变量
变量类型决定了变量分配空间的大小。用int类型举例,如果是32位的计算机,一个int类型是4个字节,一个字节是8bit,每一位都有0或1两种可能。而对于单纯的int类型(不是unsigned int),首位表示正还是负。因此共31位来存储数字。则取值范围为-2^31~2^31因此能存储的数字大概是正负21亿。如果不想要负数,就是将表示符号的首位变成跟其他位一样。0~2^32这里以int和unsigned int举例。
2024-08-23 17:21:46 261
原创 C++_CH03_链接器
链接就是将一个项目当中所有的文件连接在一起。仅仅只按ctrl+ f7链接不会发生。但是一旦build了你的项目,链接就发生了。如果写一段代码,报错以C开头,则是编译过程出现的问题。如果是LNK开头则是链接过程出现了问题。注意这里的是以C开头。注意这里是LNK开头。注意这里的错误是没有找到正确的入口。事实上入口通常是main函数。但是我们可以通过定义,使得入口是其他函数。
2024-08-22 17:57:45 609
原创 C++_CH02_编译器工作
我们在vs2022中新建一个project,之后,在源文件栏新建一个文件,我们命名为multiply,在头文件中新建一个文件,我们命名为symbol。我们可以发现一个细节,我们的末尾缺少一个花括号。这样的编译当然是会报错的。那么我们再来关注一个symbol里放的是什么呢?这个头文件就长这样,没错,就是这样。我们右击项目,打开C/C++栏–>找到预处理–>将预处理到文件勾选为‘是’。之后ctrl+f7编译。在输出目录找到multiply.i文件:该文件是我们经过预处理后的代码。
2024-08-16 16:38:25 435
原创 CPP_CH01_第一个C++程序
如果只是单纯的要编译,直接ctrl+f7,可以调试。此时file1,file2分别生成了一个file1.obj,file2.obj.然后一个项目有一个xxx.lnk文件,将这些obj链接在一起,生成可执行文件project.exe。如果在file1中,编译器相信我们,但是我们辜负了他的相信,file2中我们并没有定义my_printf(),在build项目时就会出现链接错误。在file1中,为什么我们只是告诉了编译器有这个函数叫my_printf(),而没有说他的body是什么,编译器就通过了呢?
2024-08-15 11:22:54 688
原创 数据结构 _CH03_线性表(顺序表)
线性表是相同特性元素的一个有限序列ai-1是ai的直接前驱ai+1是ai的直接后继a1又称起始结点an又称终端结点i是序号,表示元素在线性表当中的位置n表示表长n = 0表示空表数据元素ai只是一个抽象符号,在不同条件下,其具体含义不一样。e.g.1e.g.2。
2024-08-12 09:18:20 884
原创 C语言—CH10—字符函数与字符串函数
strcpystrcatstrcmp都是长度不受限制的字符串函数所以有长度受限制的函数strncpystrncatstrncmp都多了一个参数size_t num,即字节数。last += 4;x < count;} return 0;
2024-08-05 18:39:05 782
原创 数据结构_CH01_数据结构研究
参数表可以细分:赋值参数:只为操作提供输入值引用参数:用&链接,除了可以提供输入值外,还将返回操作结果。G = scan(G,n)可以写成scan(&G,n)初始条件执行操作前数据结构和参数应该满足的条件,如果不满足则操作失败,如果初始条件为空,则忽略操作结果正常操作后返回什么结果,或者数据结构状态发生什么样的变化。
2024-08-02 23:12:40 592
原创 C语言--CH08--结构体(初阶)
int num;//定义int main()struct human = {"张三",185.2,70.3,123456798};//初始化return 0;如果结构体中还有结构体,该如何初始化?int num;//定义int sex;//1男2女int birth;int main()struct human = {"张三",185.2,70.3,123456798};//初始化。
2024-06-03 10:46:41 279
原创 C语言--CH06--操作符(下)
这里的意思是,先把a的值给b,即b= 12,再执行b++,即b+1。函数调用操作符有1+n个操作数:函数名(1个),内部参数(n个),n = 0合法。因为sizeof(a)和sizeof a都是合法的,即sizeof可以省略扩号。按位取反即按二进制位取反,是一个整数的补码某一位上为0则变成1,为1则变成0。[]的操作数,一个是arr,一个是7。定义了一个叫s的Stu类型的变量,开辟了一个空间,创建了实参n,拷贝了形参s,并在拷贝的区域储存了值,之后返回的值并不是n的而是,s的,此时s的内存里还是。
2024-06-01 17:15:55 775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人