设计实验验证: 1、“函数形式参数是引用的话,在函数内对形参的改变将影响实参”。通过程序以及结果说明之。 2、进一步,C++如何避免意外修改实参?
时间: 2024-12-16 18:22:54 浏览: 6
在python中list作函数形参,防止被实参修改的实现方法
设计实验验证:
1. 首先,我们来创建一个简单的C++示例,以验证当函数接受引用作为参数时,形参的更改确实会反映到实参上。假设有一个名为`incrementRef`的函数,它接收一个整数引用作为参数,并将其加一:
```cpp
#include <iostream>
void incrementRef(int& ref) {
ref++; // 修改形参
}
int main() {
int num = 5;
std::cout << "Before function call: num = " << num << "\n";
incrementRef(num);
std::cout << "After function call: num = " << num << "\n"; // 输出应为6
return 0;
}
```
运行这个程序,你会看到`num`的值从5变为了6,证明了函数内部对形参的修改确实影响了实参。
2. C++为了避免意外修改实参,可以使用常量引用(`const &`),这是一种只读引用。例如,如果你想要保证`incrementRef`不会修改`num`,你可以这样重构:
```cpp
void safeIncrement(const int& ref) { // 使用const修饰
ref++; // 这里是只读操作,不会修改实参
}
// 调用时依然传入num,因为它是常量引用,不会修改原值
safeIncrement(num);
```
现在,即使函数尝试修改`ref`,由于它是常量引用,编译器会阻止这种行为,防止意外修改实参。
阅读全文