gpt4 book ai didi

c++ - 前向声明改变功能行为?

转载 作者:行者123 更新时间:2023-11-30 00:49:10 26 4
gpt4 key购买 nike

我正在学习 C++,只是发现了一些我想了解的奇怪的东西(请参阅代码第 5 行的注释):

#include <iostream>

using namespace std;

// WITH this forward decleration the output is A=1 and B=2
// WITHOUT this forward decleration the output is A=2 and B=1
// WHY??
void swap(int a, int b);

int main() {

int a = 1;
int b = 2;

swap(a, b);

cout << "A: " << a << endl;
cout << "B: " << b << endl;

system("PAUSE");

return 0;
}

void swap(int a, int b) {
int tmp = a;
a = b;
b = tmp;
}

有人可以解释一下这种行为吗?我认为默认情况下,c++ 按值传递,除非你像这样在函数参数前面使用 & 符号:

function swap(int &a, int &b) {

最佳答案

swap 的实现在函数中本地交换值,因为它的参数是按值传递的。它不会更改调用函数中的任何内容。

当您没有该函数声明时,将使用 std::swap,这会做正确的事情。

关于c++ - 前向声明改变功能行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com