3-3日
1.c_str
c_str()返回的是一个临时指针,用于string类型转指针类型
string redis_cmd = "GET " + redis_key;
result = _rd_client.exec_command(redis_cmd.c_str());
//exec_command定义
redisReply* redis_client::exec_command(const char *cmd) {
return exec_command_with_args(cmd);
}
3.命令注册
// 将sample_handler注册到命令字"echo"上
// 错误码基值是87000
REGISTER_SERVICE_HANDLER_EX("echo", sample_handler, 87000);
// 一个类可以注册多个不同的命令字
REGISTER_SERVICE_HANDLER_EX("echo_another", sample_handler, 87000);
class sample_handler
{
public:
// 必须提供一个构造函数,可以接受thread_data &类型参数
sample_handler(thread_data &)
{}
public:
// 必须提供一个名为handle的函数,可以接受以下参数形式的调用
void handle(
const nshead_t * in_head,
const mc_pack_reader & in_pack,
const mc_pack_writer & out_pack)
{
//业务实现
}
};
4.const和constexpr
constexpr可以用来修饰变量、函数、构造函数。一旦以上任何元素被constexpr修饰,那么等于说是告诉编译器 “请大胆地将我看成编译时就能得出常量值的表达式去优化我”。
const int func() {
return 10;
}
main(){
int arr[func()];
}
//error : 函数调用在常量表达式中必须具有常量值
编译期大胆地将func()做了优化,在编译期就确定了func计算出的值10而无需等到运行时再去计算。
类内静态变量赋值,必须用const修饰
class A{
public:
static int a=1; //报错
static const int b = 1; //正确
static const double pi1 = 3.14;//报错
static constexpr double pi3 = 3.14;//正确
}
总之总结两句就是:
1、不建议在类内初始化。
2、静态成员只有一个副本,所有的类对象共用。而非静态成员每个对象有一个副本。
类内静态成员变量的使用:
A::a
对象中的普通成员使用 ->或.

浙公网安备 33010602011771号