[const] C++ const关键字需要注意的点

C++中 const 关键字使用场景

 

目录

C++中 const 关键字使用场景

C++ 类声明(待完善)

const 成员函数

const 成员变量

返回值为const的成员函数

C++ const修饰函数参数

const修饰其他变量

const 全局变量


C++ 类声明(待完善)

const 成员函数

const成员函数相当于提醒编译器,这个函数不会修改类的成员变量

const 成员变量

const成员变量可以使用初始化列表的方式初始化(C++ 11开始)

返回值为const的成员函数

 

C++ const修饰函数参数

目的是保证实参或实参指向的内存中的内容不被修改

1. 函数形参(parameter)为指针或者引用类型时,使用const修饰是有意义的,这块const指出了不能通过形参修改实参指向的内存块内容

2. 函数参数传入方式为,值传递类型(int, char, 等等) 时,使用const是没有意义的,因为值传递会复制实参的内容给形参,函数中不可能通过形参来修改实参

const修饰其他变量

const 全局变量

1. const 指针变量(const char* p = ""), 表示指针只能指向只读的内存块(可以改变,但是必须是只读块)

   也意味着不能直接通过这个const指针变量(p)来修改内存块中的内容,但是可以通过别的方式修改。

// 取自 Google leveldb源码中的 c_test.c

const char* phase = "";  // 表示指针可以指向其他只读内存块

static void StartPhase(const char* name) {
  fprintf(stderr, "=== Test %s\n", name);
  phase = name;
}

我自己的试验:

const char* read_only_str = "00";

void show_test(const char* input) {
    std::cout << read_only_str << std::endl;
    std::cout << "===============" << std::endl;
    read_only_str = input;
    std::cout << read_only_str << std::endl;
}

int main() {

    char str[7] = "Hello";
    show_test(str);

    str[3] = 'Y';
    std::cout << read_only_str << std::endl;

    return 0;
}

输出结果:

00
===============
Hello
HelYo

2. const指针

 char* const p = "iudsfi";  // 表示指针p不能改变,也就是p不能指向别的内存块

3. const变量,建议使用std::string来替代char数组

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页