请举例教我const修饰函数时的效果
时间: 2024-09-27 19:09:07 浏览: 27
C++中何时调用复制构造函数
在 C++ 中,`const` 关键字可以用来修饰函数,表示函数在其整个生命周期内不会改变某些特定的对象或变量。当在一个函数前添加 `const`,这个函数被称为常量成员函数(也称为 const 函数),它有以下效果:
1. **不可修改参数**:
当 `const` 修饰函数参数时,表示函数不会修改该参数的值。这对于传入的引用类型尤为明显,`const T&` 参数意味着函数保证不会修改引用所指向的对象。
```cpp
void printConst(int const& num) {
// 此函数只读取num,不允许修改
std::cout << "Value: " << num << "\n";
}
```
在这个例子中,`printConst` 接受一个整型常量引用,只能打印值但不能改变它。
2. **无副作用**:
如果函数的目的是为了提供信息而不是改变状态,那么添加 `const` 可以清楚地表明其安全性质,不会意外地影响到程序其他部分。
```cpp
const char* getName() const {
return "Alice"; // 这里返回的是一个常量字符串,不会修改名字
}
```
这个 `getName` 函数返回一个指向字符串的常量指针,确保不会修改这个名字。
3. **提升效率**:
在某些情况下,编译器可能会优化 `const` 函数,因为它知道不需要为修改内部状态做额外的检查。
```cpp
class MyClass {
public:
void doSomethingWithoutChangingMe() const { /* ... */ }
};
MyClass obj;
// 使用const函数不会触发类的数据成员修改检查
obj.doSomethingWithoutChangingMe();
```
这里,`doSomethingWithoutChangingMe` 是一个 const 函数,因此可以直接调用,而无需创建临时对象。
阅读全文