![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 83
LAWKAWAI
这个作者很懒,什么都没留下…
展开
-
【C++】隐式转换与explicit关键字、运算符及其重载、this关键字
隐含的意思是不会明确告诉你要做什么。原创 2023-05-01 00:19:25 · 699 阅读 · 0 评论 -
【C++】三元操作符、创建并初始化C++对象、C++new关键字
若s_Level > 5, 则s_Speed = 10;返回指针,size作为参数,返回一个指向那个分配的内存块的指针。malloc函数代表内存分配,传入一个size,然后返回一个空指针。调用了C函数free(),free可以释放malloc申请的内存。new是一个函数,有一个分配得到的内存大小,返回一个空指针。作用域{}之外,e指向的内容仍然未被释放掉。new的源代码:就是一个操作符,操作符重载。只要创建了,就会一直存在,直到手动删除它。假设Entity的大小是小于200字节的。原创 2023-05-01 00:01:48 · 1104 阅读 · 0 评论 -
【C++】CONST、mutable关键字和成员初始化列表
因为是通过=,即值来传递参数进lambda,而不是引用;所以在x++时,创建了y,并将x+1赋值给y,而原来的x其实还没动过,所以x打印出来还是8。通过值传递的变量,比如x,是可以被改变的。应该到处使用成员初始化列表。原创 2023-04-22 00:46:42 · 87 阅读 · 0 评论 -
【C++】数组、字符串和字符串字面量
这里的操作实际上是将一个指针,添加到了name,name是一个string,把它加到string上,而+=操作符已经被string重载了,所以可以这样写。报错,因为右边是两个字符串相加,但是大家都知道,字符串是不可变的,字符串是const char数组,不是真正的string, 所以右边是不能相加的。这样是不行的,这是一个未定义的行为,改不了,不能将e改成a;未定义是不被允许的,原因是,这里所做的是去了一个指向那个字符串字面量的内存位置的指针,而字符串字面量是存储在内存的只读部分。或const char。原创 2023-04-21 23:42:53 · 430 阅读 · 0 评论 -
【C++】虚函数、接口(纯虚函数)和可见性
我们希望的是,Entity类里的GetName用于Entity, Player类里的GetName用于Player,但这里的GetName打印出来的是Entity。所以对于随便创建一个类A,是Printable类的子类,就必须有这个GetClassName函数,如果没有实现GetClassName函数,,则无法实例化这个类。然而,这不是我们的本意,因为我们是给了entity赋值为p,该指针是指向Player,本来是希望打印Cherno的,却打印Entity,所以这里是有问题的。原创 2023-04-16 00:31:02 · 509 阅读 · 2 评论 -
【C++】构造函数、析构函数和继承
构造函数是一种特殊类型的方法,在每次实例化对象时运行。原创 2023-04-15 20:46:27 · 357 阅读 · 0 评论 -
【C++】枚举
此外,默认第一个是0, 第二个是1, 第三个是2, 所以A=0, B= 1, C=2。再次强调:枚举只是给特定的值命名的一种方式,这样就不用在各种地方,处理各种整数。现在,我们希望能定义一种类型,只能是A, B, C三种中的一种。报错,因为Example只能取A, B, C三个数中的一个。注意:定义Class的函数时不要与enum里的命名冲突。注意:不能使用float,因为float不是整型;原创 2023-04-15 19:43:30 · 61 阅读 · 0 评论 -
【C++】静态
无法解析外部符号,也就是说找不到s_Variable这个外部变量,因为s_Variable是静态,只能在翻译单元static.cpp内部链接,对Main.cpp来说,s_Variable是不可见的。初始化的时候就创建了一个s_Instance, 在后续的类实例创建中,总是会返回这个s_Instance, 所以整个生命期这个类的实例就只有这个,所以叫单实例.打印出来为10, 不会报错,因为static.cpp里面的s_Variable是static的,只会在static.cpp内部链接。原创 2023-04-12 01:09:09 · 81 阅读 · 0 评论 -
【C++】指针和引用
我们要知道,计算机只处理内存,再编程过程中,内存就是一切。当我们运行程序时,所有程序会载入内存,CPU就这样访问程序并开始执行指令。所以,当创建一个变量,计算机会从磁盘加载数据,然后将所有的都存储在内存中。那么,在这个当中,指针就发挥着管理和操纵内存的作用。原创 2023-04-09 11:50:23 · 62 阅读 · 0 评论 -
【C++】链接器如何工作
编译不会检查函数体调用的错误。链接过程会把显式调用的函数全部连接起来,如果发现函数名(或其他形式)写错,则会报错。static可以限定函数只允许在本文件下被调用,不允许被外部文件调用。链接函数过程中,函数的名字、函数的返回类型以及函数的参量一定要一致才行。如果在同一个文件中出现相同的函数名和函数体,编译器可以识别出这类错误,出现编译错误。如果在主文件和被调用文件里出现相同的函数名和函数体,编译器识别不出这类错误,但链接器可以,因为链接器找到了两个相同的函数,不知道该连接哪一个。原创 2023-03-30 18:54:45 · 135 阅读 · 0 评论