const的用法
解释 const auto func(const int& a) const {} 中各个 const 的含义。
代码示例及分析
#include <iostream>
class MyClass {
public:
// 成员函数定义
const auto func(const int& a) const {
std::cout << "Received value: " << a << std::endl;
return a * 2;
}
};
int main() {
MyClass obj;
const int num = 5;
const auto result = obj.func(num);
std::cout << "Result: " << result << std::endl;
return 0;
}
各个 const 的具体含义
1. const auto
- 位置:函数返回类型部分。
- 含义:这里的
const修饰函数的返回值。表示该函数返回的对象是一个常量对象,调用者不能修改这个返回值。auto是 C++11 引入的类型推导关键字,编译器会根据函数体中的返回语句自动推导返回值的类型。在上述示例中,返回值是a * 2,由于a是int类型,所以auto会被推导为int,整个返回类型就是const int。
2. const int& a
- 位置:函数参数部分。
- 含义:这里的
const修饰函数的参数。const int&表示传递给函数的是一个int类型的常量引用。使用常量引用作为参数有两个主要好处:一是避免了不必要的对象拷贝,提高了效率;二是保证在函数内部不会修改传入对象的值,增强了代码的安全性。在上述示例中,a是对传入的int类型对象的常量引用,函数内部不能修改a的值。
3. 函数后面的 const
- 位置:函数声明或定义的末尾。
- 含义:这个
const表示该函数是一个常量成员函数。常量成员函数承诺不会修改调用该函数的对象的任何非静态数据成员。也就是说,在常量成员函数内部,不能对对象的非静态成员变量进行赋值操作。这使得该函数可以被常量对象调用。在上述示例中,func是一个常量成员函数,因此可以被const类型的MyClass对象调用。
4.当函数返回一个 const 引用
一般不能使用非 const 引用接收返回值,否则会

1914

被折叠的 条评论
为什么被折叠?



