gpt4 book ai didi

c++ - C++ 中的重载函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:13 24 4
gpt4 key购买 nike

函数是重载函数吗?

void f(int a, int b) {}
void f(int& a, int& b) {}
void f(int* a, int* b) {}
void f(const int a, const int b) {}

或者仅当参数的数量或类型不同时才会重载函数?

最佳答案

1、2、3 号是。 4 号重新声明了 1 号。

你看,顶级常量限定符不影响函数声明。它们改变了您在函数定义中使用它们的方式,但它仍然是相同的函数

void f(int);
void f(const int); //redeclares
void f(const int x) //same as above
{
x = 4; //error, x is const
}

另一方面,这很好

void f(const int); 
void f(int x) //same as above
{
x = 4; //OK Now
}

请注意,非顶级常量会参与重载决议。例如

void f(int & x)
void f(const int & x) //another function, overloading the previous one

最后,你在问

Or overloading functions occurs only when the number or type of arguments differ ?

是的,没错,但是 intint*int& 是不同的类型。当然,如果是 1 或 3,在大多数情况下它会是模棱两可的调用,但在某些情况下编译器可以分辨出你指的是哪一个。例如

void f(int);
void f(int&);
f(3)//calls f(int)
int x = 3;
f(x); //ambiguous call;

关于c++ - C++ 中的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328414/

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