- 对多态的认识: 在C++中,多态性是面向对象程序设计的一个核心特性,它体现了“一个接口,多种实现”的思想。多态有两种形式:
静态多态(编译时多态):通过函数重载和运算符重载实现,编译器根据上下文信息在编译阶段就能确定调用的函数版本。
动态多态(运行时多态):主要通过虚函数机制来实现,当基类指针或引用指向派生类对象时,调用虚函数会根据对象的实际类型而非指针或引用的静态类型决定调用哪个函数。这种特性允许不同的类对象通过统一的接口表现出不同的行为。
动态多态实现方式: 动态多态是通过虚函数表(Virtual Table)和虚函数指针(VPTR)机制实现的。在包含虚函数的类的对象内部有一个隐藏的VPTR,它指向该类的虚函数表,这个表里存储了对应虚函数的地址。当通过基类指针调用虚函数时,实际上是通过VPTR找到相应的虚函数表并执行对应的函数。 - C++11新特性举例:
智能指针(unique_ptr, shared_ptr, weak_ptr):自动管理内存资源,避免内存泄漏问题。
右值引用与移动语义:更高效地处理临时对象和资源转移。
lambda表达式:简化匿名函数的定义和使用。
auto关键字:用于自动推断变量类型,减少冗余代码。
范围for循环:遍历容器更加简洁。
模板alias(using声明):简化复杂的类型名。
std::thread:支持多线程编程。
原子操作(atomic):提供线程安全的数据访问。
variadic templates:可变参数模板。 - 智能指针的种类和作用:
unique_ptr:独占所有权的智能指针,确保同一时间内只有一个对象拥有资源,析构时自动释放内存,不支持拷贝但支持移动。
shared_ptr:共享所有权的智能指针,多个智能指针可以共享同一个动态分配的对象,通过引用计数管理资源,当所有shared_ptr不再引用该对象时,对象会被自动删除。
weak_ptr:弱所有权的智能指针,它可以观察由shared_ptr管理的对象而不增加引用计数,主要用于解决shared_ptr之间循环引用导致内存无法释放的问题。 - 开发中智能指针的应用场景: 智能指针通常用于需要动态内存分配,并且希望自动管理内存生命周期的地方。例如,在类层次结构中传递和存储对象、在容器如vector、map中保存动态创建的对象等。
- 三次握手与四次挥手: 这是TCP连接建立与终止的过程:
三次握手:客户端发送SYN,服务端回应SYN+ACK,客户端再发送ACK确认,这样双方都确认对方已准备好进行数据传输。
四次挥手:客户端发送FIN表示数据发送完毕,服务端回应ACK确认;服务端完成数据发送后发送FIN,客户端回应ACK确认。经过这一过程,双方都能确认TCP连接已被正确关闭 - 进程间通信方式:
管道(Pipe)
有名管道(Named Pipe/FIFO)
消息队列(Message Queue)
共享内存(Shared Memory)
信号量(Semaphore)
信号(Signal)
套接字(Socket)
进程间套接字(Unix Domain Socket)
符号链接(Symbolic Link)
以及特定于系统的API如Windows下的邮槽(Mailslot)和剪贴板(Clipboard)等。
c++八股1
最新推荐文章于 2024-08-25 06:11:42 发布