gpt4 book ai didi

c++ - 了解函数是否在运行时获取引用或值

转载 作者:太空宇宙 更新时间:2023-11-04 02:19:06 25 4
gpt4 key购买 nike

所以这是一个纯粹的学术问题,主要是因为我已经有一段时间没有用 C++ 做过任何太复杂的事情了。但是有什么方法可以知道方法是将参数作为引用还是值?这对于指针并不重要,因为如果您尝试将非指针传递给采用指针的方法,则会出现编译错误。但是像


int someFunction(int &x){

x = 0

return x;

}

int main(){

int v = 4;

int l = someFunction(v);


我意识到这可以通过将 v 声明为 const 来避免。但我只是想知道是否有办法在运行时知道 someFunction 是采用引用还是值?

标记为 C 和 C++,两者处理此问题的方式有区别吗?

我对 C 的误解。好久没用 C 工作了,我忘了具体的边界在哪里,哈哈

最佳答案

是的。在任何语言中,都可以创建一个函数,该函数根据函数是使用按值传递还是按引用传递返回不同的结果。这不应该在日常编程中使用,但它对测试编译器、测试 API 等很有用。基本上,使用初始化为某个值的变量调用函数,并在函数中赋值参数的不同值。在调用者中,在调用函数后检查参数的值,以查看突变是否产生了可见的效果。请注意,我假设您已经编写了调用者和被调用者。

如果你想检查一些你无法控制的任意函数,你可以使用函数重载来告诉你正在使用哪种类型的参数传递方案:

bool IsPassingByReference(int (*func)(int)) { return false; }
bool IsPassingByReference(int (*func)(int&)) { return true; }

如前所述,这仅适用于 C++。 (C 有指针,但没有引用)。

关于c++ - 了解函数是否在运行时获取引用或值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540784/

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