C++基础
文章平均质量分 59
该专栏收益用于养我的臭猫通宝,专栏配图就是它,以下是通宝的自我介绍
通宝:“meowmeowmeowmeow”
坠金
记性很差,写博客一是记录,二是交流分享,欢迎批评
展开
-
C++特性:继承,封装,多态
类把⾃⼰的数据和⽅法只让可信的类或者对象操作,对不可信的进⾏隐藏,如:将公共的数据或⽅法使⽤public修饰,⽽不希望被访问的数据或⽅法采⽤private修饰。原创 2023-10-10 16:02:20 · 587 阅读 · 0 评论 -
new,malloc
newmallocnewmallocvoid*newmallocNULLnewdeletedelete[]mallocfreenewdeletemallocfreenewdeletemallocfreemalloc和free更原始,更接近底层。在C++中,通常建议使用new。原创 2023-10-10 15:45:14 · 58 阅读 · 0 评论 -
C++分析以下关于指针的操作有什么问题
对于指针类型的参数,在按值传递的情况下,传递给函数的是指针变量的值(即指针变量所存储的地址),而不是指针所指向的内存地址。因此,当在函数中对指针变量赋值时,只是修改了指针变量的值,而不是指针所指向的内存地址。p 指向的是一个新分配的内存块,但是这个操作不会影响到原始指针 str,因为传递给函数的是指针 str 的副本,即指针变量的值,而不是指针所指向的内存地址。)来分配一块动态内存,以存储需要返回的字符串,这样返回的指针将指向一块合法的内存区域,避免了使用指向局部变量的指针的风险。函数中,使用指针变量。原创 2023-03-26 15:30:49 · 297 阅读 · 0 评论 -
构造函数,构造函数要设为虚函数吗
1.构造需要顺序,构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。可以设,但没意义:C++的机制使得基类的构造函数在被调用时是按照静态类型进行调用的,而不是按照动态类型进行调用的。要:当派⽣类对象中有内存需要回收时,如果析构函数不是虚函数,不会触发动态绑定,只会调⽤基类析构函数,导致派⽣类资源⽆法释放,造成内存泄漏。静态类型指的是一个对象或表达式在编译时所声明的类型,也称为编译时类型。原创 2023-03-25 11:29:19 · 76 阅读 · 0 评论 -
内存泄漏
程序在动态分配内存后,由于某种原因未能及时释放内存,导致内存资源长时间被占用而无法再次使用。打个比方:有一个宾馆,共有100间房间,顾客每次都是在前台进行登记,然后拿到房间钥匙。如果有些顾客不需要该房间了,既不去前台处登记退房,也不归还钥匙,久而久之,前台处可用房间越来越少,收入也越来越少,濒临倒闭。当程序申请了内存,而不进行归还,久而久之,可用内存越来越少,OS就会进行自我保护,杀掉该进程,这就是我们常说的。原创 2023-03-23 19:59:21 · 112 阅读 · 0 评论 -
define,typedef,inline 的区别
这种情况在程序中比较常见,例如在函数调用时传递参数,会将参数的值复制一份到函数内部的堆栈中。当程序中使用my_int类型时,编译器会将其解释为int类型,因此只会有一个int类型的内存副本,而不是多个拷贝。立即数指的是在程序执行过程中直接出现的常量值,而不是存储在内存中的变量,比如上面的例子中PI直接被替换成数值,而不是像我们平时那样定义一个变量double PI = 3.14159。4.在编译的预处理阶段起作用,也就是在编译代码之前进行的处理,将所有的宏定义进行替换。的别名,可以在程序中使用。原创 2023-03-17 20:09:37 · 1066 阅读 · 1 评论 -
C++智能指针
Smart Pointer是C++中的一个重要概念,它是一种特殊类型的指针,能够自动管理指针所指向的动态内存的生命周期,避免内存泄漏和悬挂指针(指向已经被释放或者已经无效的内存空间的指针)等问题。C++中提供了三种智能指针:unique_ptr、shared_ptr和weak_ptr。原创 2023-03-22 08:47:03 · 534 阅读 · 0 评论 -
虚与实:C++中的虚函数,纯虚,实例
因此,在构造基类时,虚函数表将指向基类的实现,而在构造派生类时,虚函数表将更新为指向派生类的实现。如果构造函数是虚函数,将无法保证正确的虚函数表设置,从而导致未定义行为。如果构造函数是虚函数,那么在构造派生类对象时,将不清楚应该调用哪个构造函数来初始化基类部分。纯虚函数是一个在基类中声明的虚函数,它没有定义具体的实现,而是强制派生类提供实现。析构函数可以(且通常应该)是虚函数,以确保在通过基类指针删除派生类对象时正确调用派生类的析构函数。注意,构造函数不能是虚函数,而析构函数应是虚函数,原因如下。原创 2023-03-21 19:29:45 · 338 阅读 · 0 评论 -
const和static
const主要用于定义只读变量,或用于保证函数不会修改对象static主要用于定义有持久性的变量,或用于与类实例无关的成员函数。原创 2023-03-21 18:32:21 · 448 阅读 · 0 评论 -
volatile、extern、static的区别
这三者都能对变量的访问和存储行为产生影响,但是区别很大。原创 2023-03-18 22:28:44 · 302 阅读 · 0 评论 -
override 和 overload
override。原创 2023-03-17 20:36:17 · 62 阅读 · 0 评论