1. C++ 中左值、右值、右值引用分别是什么?左值一般表示有名字、可取地址、生命周期相对明确的对象;右值通常是临时对象、字面量,或者表达式计算后的中间结果。右值引用本质上是为了高效接管临时对象资源,避免不必要的深拷贝,这也是移动语义成立的基础。std::move 本身不移动对象,它只是把对象强制转换成右值引用,真正是否发生资源转移取决于移动构造或移动赋值是否实现。在工程里,右值引用常用于容器扩容、返回值优化配合、资源句柄转移等性能敏感场景。2. 什么情况下需要把析构函数写成虚函数?只要一个类可能被当作基类使用,并且会通过基类指针删除派生类对象,就必须把析构函数声明为虚函数。如果基类析构不是虚...