
Cconst正确性编程const正确性是指使用const关键字明确表示哪些值不应被修改。这是C编程中重要的设计原则可以提高代码的安全性和可读性。const成员函数承诺不修改对象状态可以被const对象调用。#include#include#includeclass Person {std::string name_;int age_;mutable int access_count_;public:Person(const std::string name, int age): name_(name), age_(age), access_count_(0) {}const std::string name() const { return name_; }int age() const { return age_; }void set_name(const std::string name) { name_ name; }void set_age(int age) { age_ age; }int get_access_count() const {access_count_;return access_count_;}void display() const {std::cout name_ ( age_ )\n;}};void const_member_demo() {const Person p1(Alice, 30);p1.display();std::cout Name: p1.name() \n;std::cout Access count: p1.get_access_count() \n;Person p2(Bob, 25);p2.set_age(26);p2.display();}const引用参数避免拷贝且保证不修改。void print_vector(const std::vector vec) {for (int v : vec) {std::cout v ;}std::cout \n;}int sum_of(const std::vector vec) {int total 0;for (int v : vec) total v;return total;}void const_ref_demo() {std::vector data {1, 2, 3, 4, 5};print_vector(data);std::cout Sum: sum_of(data) \n;}const指针和指向const的指针。void const_pointers() {int x 10, y 20;const int* ptr1 x;ptr1 y;std::cout ptr1 points to *ptr1 \n;int* const ptr2 x;*ptr2 30;const int* const ptr3 x;std::cout ptr3: *ptr3 \n;}const返回值防止对临时对象的修改。class String {char* data_;public:explicit String(const char* str) {data_ new char[std::strlen(str) 1];std::strcpy(data_, str);}~String() { delete[] data_; }const char* c_str() const {return data_;}};mutable允许const成员函数修改特定成员。class Cache {mutable bool cached_;mutable int cached_value_;int compute() const {std::cout Expensive computation\n;return 42;}public:Cache() : cached_(false), cached_value_(0) {}int get_value() const {if (!cached_) {cached_value_ compute();cached_ true;}return cached_value_;}};void mutable_demo() {const Cache cache;std::cout Value: cache.get_value() \n;std::cout Cached: cache.get_value() \n;}const_iterator保证只读遍历。void const_iterator_demo() {std::vector vec {10, 20, 30, 40, 50};for (auto it vec.cbegin(); it ! vec.cend(); it) {std::cout *it ;}std::cout \n;}const重载选择不同行为。struct OverloadDemo {void func() {std::cout non-const version\n;}void func() const {std::cout const version\n;}};void const_overload() {OverloadDemo obj;const OverloadDemo const_obj;obj.func();const_obj.func();}const与引用限定符结合。class DataHolder {std::vector data_{1, 2, 3};public:const std::vector get() const {return data_;}std::vector get() {return std::move(data_);}};const正确性使代码意图更明确减少bug是编写高质量C代码的基本要求。