八股文
文章平均质量分 89
whitenpc
这个作者很懒,什么都没留下…
展开
-
八股文(五)
左值和右值概念的区别1.左值一般是等号左边相对应的右值就是等号右边。左值一般那几个固定类型的,比如int、float等等具有持久的状态,右值一般是临时创建的比如函数的返回值int func(),等等一般都是临时创建的。2....原创 2022-05-05 16:53:18 · 686 阅读 · 0 评论 -
八股文(四)
各种关键字const1首先知道const修饰符用来定义常量,具有不可变性 。2然后还有引申出底层const和顶层const的概念,指针本身是个常量,指向的对象是常量,这样就有了顶层指针和底层指针的概念。顶层的const表示的是指针本身无法被修改位置,只能指向这个对象,底层的const表示的是指针指的对象是是常量,无法被修改值。int i = 0;int *const p1 = &i; // 不能改变p1的值,这是一个顶层constconst int ci = 42; // 不能改变原创 2022-05-03 21:04:57 · 2105 阅读 · 0 评论 -
八股文(三)
几个关键字const_cast作用是去掉const,这个const_cast用来去除string类型的const然后再修改string值输出的时候输出的是修改后的值,但是如果去除了int类型的const再修改int值,输出的仍是修改前的值,这里其实int底层内存已经被修改了,但是字符表存放的仍然保存的是以前的值。换成高级的说法就是,只能改变对象的底层const(顶层const,本身是const,底层const,指向对象const)。const_cast且只能用于指针或引用,因为只有通过这两个才能修改原创 2022-05-02 21:34:01 · 154 阅读 · 0 评论 -
八股文(二)
C++内存模型C++内存分为5个区域:堆 heap :由new分配的内存块,其释放编译器不去管,由我们程序自己控制(一个new对应一个delete)。如果程序员没有释放掉,在程序结束时OS会自动回收。可能存在的问题是“缓冲区溢出”、“内存泄露”栈 stack :是那些编译器在需要时分配,在不需要时自动清除的存储区。存放局部变量、函数参数。存放在栈中的数据只在当前函数及下一层函数中有效,一旦函数返回了,这些数据也就自动释放了。全局/静态存储区 (.bss段和.data段) :全局和静态变量被原创 2022-05-01 17:00:14 · 259 阅读 · 0 评论 -
八股文(一)
虚函数首先,有一个概念叫做虚函数表,虚函数表和虚函数的关系是当一个类在实现的时候,如果存在一个或以上的虚函数时,那么这个类便会包含一张虚函数表。而当一个子类继承并重写了基类的虚函数时,它也会有自己的一张虚函数表,也叫Virtual Table,这个表的功能是解决了继承和覆盖的问题(像下图中的g函数就被覆盖了)。产生虚函数表的时期是当一个类中至少存在一个虚函数的时候在编译期间就会生成虚函数表。在虚函数表中,也就是这个伪代码中的成员变量被称作虚函数表指针,virtual table pointer..原创 2022-04-30 17:09:00 · 750 阅读 · 0 评论