const string getWord() ;和 string getWord() const ;是一样的效果吗

const string getWord() ;和 string getWord() const ;是一样的效果吗

不一样,这两个声明完全不是一回事const 修饰的位置不同,作用也不同。我帮你拆解一下:


1. const string getWord();

  • const 修饰的是返回值
  • 表示这个函数返回的 string 对象是一个常量const string),外面不能修改它。
  • 例子:

cpp

运行

复制代码
const string s = obj.getWord();
s[0] = 'A'; // ❌ 编译错误,因为 s 是 const
  • 注意:如果返回的是值类型 (而不是引用),那么 const 修饰返回值意义不大,因为外部拿到的只是一个临时副本,本来也没法直接修改原对象(除非用户用引用接收)。

2. string getWord() const;

  • const 修饰的是成员函数本身(只能出现在类的成员函数声明中)
  • 表示这个函数是一个常量成员函数 ,它不能修改类的非 mutable 成员变量 ,也不能调用非 const 的成员函数。
  • 它的作用是保证这个函数不会改变对象的状态
  • 例子:

cpp

运行

复制代码
class MyClass {
    string word;
public:
    string getWord() const; // 常量成员函数
};

string MyClass::getWord() const {
    word = "abc"; // ❌ 编译错误,不能修改成员变量
    return word;
}

3. 两者区别总结表

声明形式 const 修饰对象 作用效果
const string getWord(); 返回值 返回的字符串是常量,外部不能修改它(意义有限,因为返回的是副本)
string getWord() const; 成员函数本身 函数内部不能修改类的成员变量(保证 const 对象可以调用它)

4. 关键记忆点

  • const 在函数返回类型前 → 限制返回值不可修改
  • const 在函数参数列表后 → 限制成员函数不能修改对象内部状态(常成员函数)

口诀

前 const 管返回,后 const 管函数。

相关推荐
踏着七彩祥云的小丑8 分钟前
Go学习第8天:接口 + 泛型 + 错误处理
开发语言·学习·golang·go
聆风吟º11 分钟前
Python基础数据类型(一):数字类型
开发语言·python·float·int·bool·数字类型
laplaya11 分钟前
C++大型项目组件通信与依赖管理实践
c++·log4j·apache
春栀怡铃声12 分钟前
【C++修仙录03】进阶篇:多态
c++
小灰灰搞电子18 分钟前
C++ boost::container 详解:高性能容器库完全指南
开发语言·c++·boost
Y_Bk20 分钟前
第十七届蓝桥杯C/C++A组省赛
c语言·数据结构·c++·算法·蓝桥杯
Brilliantwxx20 分钟前
【C++】 C++11 知识点梳理(上)
开发语言·c++
飞天狗11121 分钟前
零基础JavaWeb入门——第4课:表单处理 —— 浏览器怎么把数据发给服务器
java·开发语言·前端·后端·servlet
多彩电脑28 分钟前
向AIDE(安卓设备上的Android Studio)导入aar库
android·java·开发语言·androidx
江屿风37 分钟前
C++图论基础单源最短路-常规版dijkstra算法/堆优化版dijkstra算法/bellman-ford 算法/spfa 算法流食般投喂
开发语言·c++·笔记·算法·图论