:函数前 const vs 函数后 const 区别)
一、一句话核心区别函数名前加 constconst 返回类型 函数名(参数)→ 修饰函数的返回值表示返回值是只读的不能被修改。函数名后加 const返回类型 函数名(参数) const→ 修饰当前对象this 指针表示这个函数不会修改对象的成员变量。→只能用于类的成员函数普通函数不能写二、函数名前 const修饰返回值作用告诉编译器这个函数返回的数据不能被修改是只读的。示例// 返回一个不能被修改的 int const int getNum() { return 100; } int main() { const int a getNum(); // 正确 // getNum() 200; // 错误返回值是const不能赋值 return 0; }适用场景避免返回的临时对象被意外修改指针 / 引用返回时保证数据只读安全三、函数名后 const修饰成员函数最常考作用表示这个成员函数是只读函数不会修改任何成员变量。规则只能用于类的成员函数全局函数不能写函数内部不能修改任何成员变量const 对象只能调用 const 成员函数非 const 对象既能调用 const 函数也能调用非 const 函数示例class Person { private: int age 20; public: // 函数后 const只读函数不能修改成员 void show() const { cout age endl; // age 30; ❌ 错误const函数不能修改成员 } // 普通成员函数 void setAge(int a) { age a; } };最重要规则const 对象只能调用 const 成员函数const Person p; p.show(); // ✅ 正确 // p.setAge(10); ❌ 错误const对象不能调用非const函数四、一张表彻底分清表格写法位置修饰谁作用能否用于普通函数const int func()函数前返回值返回值只读✅ 可以int func() const函数后当前对象成员函数只读不能修改成员❌ 不可以五、最经典面试题问下面两个函数能构成重载吗void func(); void func() const;答案可以这是 C 中非常经典的const 重载。普通对象调用func()const 对象调用func() const六、总结背会就不会再错前 const修饰返回值返回值不能改后 const修饰成员函数对象不能改后 const 只能用于成员函数const 对象只能调用 const 成员函数函数后 const 是面向对象核心考点