- 博客(10)
- 收藏
- 关注
原创 c++八股
阶段不同:宏定义在预编译的时候进行替换,而内联函数是在编译阶段进行替换的宏定义只是进行简单的文本替换无需进行类型检查等,而内联函数是真正的函数需要进行参数类型、函数体内部语句能否正常编译的检查;宏定义是无法调试的,但是内联函数是可以调试的;构造函数不可以定义为虚函数,这是因为构造函数实在创建对象的时候使用,但是虚函数是在创建对象后通过调用虚表指针来调用,因此构造函数不能定义为虚函数。
2024-09-16 19:26:32
986
原创 c++11新特性
在学习面向对象编程时,如果在类中没有定义构造函数、拷贝构造函数和析构函数,则编译器会为对象自动生成默认函数,如果使用了用户自定义的构造函数,那么编译器就不会再使用默认的构造函数,也就是说默认的构造函数与自定义的构造函数是不共存的。另外,有一种场景下,不允许使用拷贝构造函数,例如智能指针中的unique_ptr,所以要禁用对象的默认拷贝构造函数,下面就是禁用拷贝构造函数的例子;参数含义:expression,必须是一个序列,例如vector、string、数组等能够拥有迭代器成员的;这里就不再过多叙述;
2024-07-14 00:14:04
448
原创 C++内存
内存对齐的目的就是为了减少计算机读取数据的次数,例如在32位计算机中,为了使得计算机一次能够读取到一个完整的4字节的数据,要求数据的存储首地址应该为4的倍数;栈区:用于存储局部变量、函数参数等,栈空间一般有系统和编译器默认分配或者由程序指定分配,并且在程序运行期间一直存在,在程序结束后由系统收回;堆区:涉及到动态内存的使用,由malloc或者new来申请,由delete或者free来释放,在程序运行期间随时申请和释放;常量存储区:主要用于存储常量,一般为只读,不允许修改,程序运行结束时自动释放;
2024-07-09 20:13:38
249
原创 十大排序算法
以上三种排序方法分别为冒泡排序,选择排序以及插入排序,三者有共同点和不同点;相同点:时间复杂度都为O(n2),空间复杂度都为O(1);不同点选择排序是不稳定的,冒泡排序、插入排序是稳定的;在这三个排序算法中,选择排序交换的次数是最少的;在数组几乎有序的情况下,插入排序的时间复杂度接近线性级别。
2024-07-09 20:13:18
457
原创 c++primer第二章难点
c++11中引入了auto说明符,让编译器代替我们分析表达式的类型;最重要的两个符号:取地址符(&)以及解引用符(*);弄明白这两点之后就没有什么难懂的;
2024-07-01 18:47:38
230
原创 计算机网络基础高频面试题之网络层
例如,A与B在同一局域网中,A已经知道B的IP地址,如何获取B的物理地址,A首先会向局域网中所有的主机发送ARP请求包,这个ARP包的内容是:我是A(A的IP地址),我的物理地址是xxxx,想要获取B(B的IP地址)的物理地址;此时分两种情况:第一是A与B在同一局域网中(A已知B的IP地址,可以通过子网掩码查看B与A是否同属于子网中),那么A就可以利用ARP协议获取到B的MAC地址,然后在A将IP数据包交给数据链路层进行封装成帧时,会将帧的目的MAC地址写为B的MAC地址,然后通过交换机将数据帧发送给B;
2024-07-01 00:10:52
183
原创 计算机网络高频面试题之传输层
传输层保证端到端的可靠传输,传输层协议规定了数据在传输过程中的规则,例如速率,是否重传等等,同时也兼顾将应用层中多个进程进行复用和分用。常用的传输层协议:TCP协议和UDP协议;有人会问在网络层中明明实现的也是数据从一台主机到另一台主机之间的通信,为什么传输层中保证的仍然是端到端的通信?这实际上是因为网络层中侧重于寻找一条合适的路径将数据从一台主机转发到另一台主机,而对于传输层协议来讲,更加侧重于在传输的过程中,如何保证数据不会产生丢失、错误以及网络拥塞问题。
2024-06-27 18:23:27
1482
原创 计算机网络高频面试题之应用层
首先要明白应用层所做的事情就是提供了一个用户与网络之间的桥梁,使得用户可以直接使用网络。而应用层最重要的一个东西叫做应用程序,目前的应用程序都是C/S架构,即应用程序包括三个部分:客户端、服务器以及应用层通信协议;所谓客户端实际上就是用户和应用程序之间的接口,可以帮助用户使用应用程序,其次服务器可以处理客户端发送的请求,访问数据库中的资源,并返回响应,即客户端需要的资源返回给客户端。最后是通信协议,应用层通信协议规定了客户端和服务器之间的数据传输规则和格式。
2024-06-24 14:05:34
609
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人