摘要: 在C++中,friend关键字用于声明友元函数或友元类1。友元函数或友元类可以访问当前类的私有成员和保护成员,即使它们不是当前类的成员函数或成员类1。 友元函数是一个独立的函数,而友元类是一个类可以访问另一个类的私有成员和保护成员1。 例如,如果要声明函数为一个类的友元,需要在类定义中该函数原型前使 阅读全文
posted @ 2023-12-04 16:51 ponder776 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 在C++中,stack和queue默认使用deque作为底层容器的原因主要有以下几点: 操作效率:deque(双端队列)支持在头尾两端进行插入和删除操作,且时间复杂度都为O(1),非常高效1。而vector在增长到一定长度时为了保证完全连续,需要重新申请更长的内存,并把原来的元素全部拷贝过去2。这使 阅读全文
posted @ 2023-12-04 16:03 ponder776 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 在 C++ 中,std::stack 和 std::queue 是容器适配器,它们提供了特定的接口,依赖于某个容器类(如 std::deque 或 std::list)来处理元素1。 std::stack:std::stack 默认使用 std::deque 作为其底层容器2。但是,你也可以在创建 阅读全文
posted @ 2023-12-04 15:39 ponder776 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 在 C++ 中,深拷贝和浅拷贝是两种不同的对象复制方式: 浅拷贝:当我们创建一个对象的副本时,如果仅仅复制所有成员变量的数据,那么这就是浅拷贝。这在所有的变量都在栈内存中分配时工作得很好1。但是,如果有些变量是在堆内存中动态分配的,那么复制的对象变量也会引用同一块内存位置1。这将导致二义性和运行时错 阅读全文
posted @ 2023-12-04 13:21 ponder776 阅读(4) 评论(0) 推荐(0) 编辑
摘要: std::forward 在 C++ 中的主要用途是实现完美转发。它的主要好处有以下几点: 保持值类别:std::forward 能够保持函数参数的值类别(即,它是左值还是右值)。这对于保持潜在的移动语义非常重要2。 优化性能:在模板函数中,我们通常使用 std::forward 来转发函数参数,以 阅读全文
posted @ 2023-12-04 12:58 ponder776 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 使用 static_cast 的好处主要有以下几点: 增强类型安全:static_cast 是一种显式的类型转换,它要求源类型和目标类型在某种程度上是兼容的。如果尝试进行非法的转换(例如,将 int* 转换为 char*),编译器会报错1。这有助于防止类型错误。 提高代码可读性:static_cas 阅读全文
posted @ 2023-12-04 12:21 ponder776 阅读(32) 评论(0) 推荐(0) 编辑