C++高频知识点(三十一)
文章目录
- 151. 如果系统中只有1GB的物理内存,然后malloc申请2G的空间能否成功?
- 152. 同时定义了两个同名同参函数,一个带const,一个不带,会有问题吗?
- 153. GET 和 POST 的区别?
- 154. 谈谈Redis 持久化机制?
- 1. RDB 持久化(快照)
- 2. AOF 持久化(追加日志)
- 3. RDB vs AOF 选型
- 4. 混合持久化
- 155. 谈谈++i和i++的区别与实现
- 二者区别
- 前缀递增 ++i 的实现
- 后缀递增 i++ 的实现
151. 如果系统中只有1GB的物理内存,然后malloc申请2G的空间能否成功?
下面给一段测试代码
#include <iostream>
#include <cstdlib>int main() {// 1024 * 1024 * 1024:表示 1GB 的字节数(1024 字节 = 1KB,1024KB = 1MB,1024MB = 1GB)void* ptr = malloc(2L * 1024 * 1024 * 1024); // 请求2GB内存if (ptr == nullptr) {std::cout << "Memory allocation failed" << std::endl;} else {std::cout << "Memory allocation succeeded" << std::endl;}return 0;
}
152. 同时定义了两个同名同参函数,一个带const,一个不带,会有问题吗?
153. GET 和 POST 的区别?
GET 和 POST 是 HTTP 协议中常用的两种请求方法,它们在使用场景、数据传输方式、性能、安全性等方面有明显的区别。
154. 谈谈Redis 持久化机制?
Redis 提供了两种主要的持久化机制:RDB(Redis Database)快照和AOF(Append Only File)日志。
1. RDB 持久化(快照)
2. AOF 持久化(追加日志)
3. RDB vs AOF 选型
4. 混合持久化
155. 谈谈++i和i++的区别与实现
二者区别
前缀递增 ++i 的实现
前缀递增直接对变量进行修改并返回修改后的值,因此其实现相对简单。
class MyInt {
public:int value;MyInt(int v) : value(v) {}// 前缀递增运算符重载MyInt& operator++() { // 返回引用++value; // 先自增return *this; // 返回当前对象的引用}
};int main() {MyInt obj(5);++obj; // 调用前缀递增return 0;
}
后缀递增 i++ 的实现
后缀递增需要先返回原始值,然后再对变量进行修改。为了区分前缀和后缀递增,C++规定后缀递增运算符必须带一个无用的参数(通常是一个int类型),实际调用时这个参数不会传递任何值。
在 C++ 中,后缀递增运算符通过一个伪参数 int 来区分。这个 int 参数并不会被使用,主要是为了让编译器区分前缀递增和后缀递增。
class MyInt {
public:int value;MyInt(int v) : value(v) {}// 前缀递增运算符重载MyInt& operator++() { // 返回引用++value;return *this;}// 后缀递增运算符重载MyInt operator++(int) { // 注意这里的 int 参数MyInt temp = *this; // 保存原始值++(*this); // 调用前缀递增return temp; // 返回原始值的副本}
};int main() {MyInt obj(5);MyInt result = obj++; // 调用后缀递增return 0;
}
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!