c++学习记录-4

1. 静态变量的分配空间

在头文件中使用static关键字声明一个静态变量m_simulate_config,表明它是一个类的所有对象共享的变量。但是这只是声明,并没有给这个变量分配内存空间,所以在对应的cpp文件中需要再次进行定义。

在cpp文件中定义静态变量的语法是:

数据类型 类名::变量名 = 初始值;

2. enable_shared_from_this

std::enable_shared_from_this 是 C++11 中的一个模板类,用于支持在类的成员函数中安全地获取指向当前对象的 std::shared_ptr

在使用 std::shared_ptr 管理对象资源时,有时需要在对象内部的成员函数中获取指向当前对象的 std::shared_ptr。但是,由于成员函数在调用过程中可能会创建临时的 std::shared_ptr,并在函数调用结束后销毁,这可能导致指向对象的 std::shared_ptr 的引用计数变为0,从而导致对象被提前销毁。

为了解决这个问题,C++11 提供了 std::enable_shared_from_this 模板类,通过继承该类,可以安全地在对象内部的成员函数中获取指向当前对象的 std::shared_ptr。它提供了一个成员函数 shared_from_this(),调用该函数将返回一个指向当前对象的 std::shared_ptr,而不会导致对象被提前销毁

3.reinterpret_cast

reinterpret_cast 是 C++ 中的一种类型转换运算符。它用于执行低级别的类型转换,可以将一个指针或引用转换为不同类型的指针或引用,而不进行任何运行时检查。它可以将任何类型转换为任何其他类型,只要两个类型在二进制表示上是兼容的。

在给定的代码中,reinterpret_cast 被用于将 msg_data.c_str() 的返回值(const char * 类型)转换为 const Bytef * 类型的指针,以便作为 compress 函数的参数使用。这样做是因为 compress 函数要求传入的参数是 const Bytef * 类型的指针。

需要注意的是,reinterpret_cast 是一种非常强制的类型转换,它不会进行任何类型检查,因此在使用时需要确保转换是安全和正确的。

你可能感兴趣的:(c++,c++,学习,jvm)