You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中三种带有const修饰的MyClass成员函数有何区别?

三种MyClass成员函数中const修饰符的作用区别

下面逐个拆解三种写法里const的具体作用:

第一种:修饰函数返回值

const int MyClass::showName(string id){
...
}

这里的const直接修饰函数的返回值,意味着函数返回的int值是只读的,不能被当作左值修改。比如你写obj.showName("123") = 10;这类代码会直接触发编译错误,因为返回的int具备const属性,不允许赋值操作。

第二种:修饰函数参数

int MyClass::showName(const string id) {
...
}

这里的const修饰的是函数的参数id,表示在函数内部不能修改这个参数的内容。比如在函数里执行id = "new_id";这类赋值操作是不合法的。这么写主要是约束函数内部的操作,避免误改参数,同时也能让函数更安全地接收const类型的实参。

第三种:修饰成员函数本身

int MyClass::showName(string id) const{
...
}

这个const放在函数参数列表末尾,用来标记整个成员函数为常成员函数,它有两个关键限制:

  • 函数内部不能修改类的任何非static成员变量;
  • 函数内部不能调用类的非const成员函数。

另外,const类型的类对象只能调用这类const成员函数,而非const对象既可以调用const成员函数,也可以调用非const成员函数。这种写法通常用于那些只做读取操作、不会改变对象状态的函数。

内容的提问来源于stack exchange,提问作者Harshvardhan Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:11:07