c++面试突击
文章平均质量分 67
小二佷有爱
这个作者很懒,什么都没留下…
展开
-
对象的析构顺序
笔记:多个对象在同一作用域内即将消亡时**,先定义的后析构**,满足一个栈的管理;eg:#include <iostream>using namespace std;class Test{private: int *p;public: Test(int tmp) { this->p = new int(tmp); cout << "Test(int tmp)" << endl; } ~Test() { if (p != N原创 2021-03-08 11:43:51 · 202 阅读 · 0 评论 -
一文解决多重继承会产生什么问题?怎么解决
多重继承时会出现什么状况?如何解决?面试高频指数:★★★★☆多重继承(多继承):是指从多个直接基类中产生派生类。多重继承容易出现的问题:命名冲突和数据冗余问题。举例:C++#include <iostream>using namespace std;// 间接基类class Base1{public: int var1;};// 直接基类class Base2 : public Base1{public: int var2;};//原创 2021-03-07 22:41:48 · 1719 阅读 · 0 评论 -
c++面试突击:第一章 编译内存相关:智能指针(下)
一,智能指针有哪几种?智能指针的实现原理?面试高频指数:★★★★★ 智能指针是为了解决动态内存分配时带来的内存泄漏以及多次释放同一块内存空间而提出的。C++11 中封装在了 头文件中。C++11 中智能指针包括以下三种:共享指针(shared_ptr):资源可以被多个指针共享,使用计数机制表明资源被几个指针共享。通过 use_count()查看资源的所有者的个数,可以通过 unique_ptr、weak_ptr 来构造,调用 release()释放资源的所有权,计数减一,当计数减为 0 时原创 2021-03-06 23:28:15 · 673 阅读 · 0 评论 -
c++面试突击:第一章:编译内存相关 内存泄漏相关(上)
一,什么是内存泄露面试高频指数:★★★★☆ 内存泄漏:由于疏忽或错误导致的程序未能释放已经不再使用的内存。 进一步解释:并非指内存从物理上消失,而是指程序在运行过程中,由于疏忽或错误而失去了对该内存的控制,从而造成了内存的浪费。常指堆内存泄漏,因为堆是动态分配的,而且是用户来控制的,如果使用不当,会产生内存泄漏。使用 malloc、calloc、realloc、new 等分配内存时,使用完后要调用相应的 free 或 delete 释放内存,否则这块内存就会造成内存泄漏。指针重新赋值C+原创 2021-03-04 18:28:42 · 775 阅读 · 3 评论 -
c++面试突击:第一章:编译内存相关 堆,栈,和内存(中)
三,栈和堆的区别面试高频指数:★★★★★申请方式:栈是系统自动分配,堆是程序员主动申请。申请后系统响应:分配栈空间,如果剩余空间大于申请空间则分配成功,否则分配失败栈溢出;申请堆空间,堆在内存中呈现的方式类似于链表(记录空闲地址空间的链表),在链表上寻找第一个大于申请空间的节点分配给程序,将该节点从链表中删除,大多数系统中该块空间的首地址存放的是本次分配空间的大小,便于释放,将该块空间上的剩余空间再次连接在空闲链表上。栈在内存中是连续的一块空间(向低地址扩展)最大容量是系统预定好的,堆在内存中的空原创 2021-03-04 18:25:27 · 351 阅读 · 1 评论 -
c++面试突击:第一章:编译内存相关
一,C++ 程序编译过程:面试高频指数:★★★★☆编译过程分为四个过程:编译(编译预处理、编译、优化),汇编,链接。编译预处理:处理以 # 开头的指令;编译、优化:将源码 .cpp 文件翻译成 .s 汇编代码;汇编:将汇编代码 .s 翻译成机器指令 .o 文件;链接:汇编程序生成的目标文件,即 .o 文件,并不会立即执行,因为可能会出现:.cpp 文件中的函数引用了另一个 .cpp文件中定义的符号或者调用了某个库文件中的函数。那链接的目的就是将这些文件对应的目标文件连接成一个整体,从而生成可翻译 2021-02-18 22:09:53 · 3045 阅读 · 0 评论