小编jos*_*ike的帖子

通过引用传递函数 - 如何获取地址?

C++ 新手,学习是为了乐趣。我仍在尝试理解引用和取消引用语法,所以如果您正在阅读本文,请用心并请帮助解释(如果可以的话)。一般来说,我理解=& foo返回对象的引用foo。并且引用 by&foo应该能够像指针一样显示它所引用的对象的地址。所以这可以赎回 foo 的地址:

//EXAMPLE 1 - works as expected?
void useFooRef(int &foo) {    
    cout << "using foo @ " << &foo << endl; //using foo @ 0x16eebb4e8
    //no warning here!
}

int foo = 1;

int main() {
    useFooRef(foo);
    return (0);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果foo是我传递的函数,则将其作为指针接收并提取其地址似乎很好;尽管如此,我读到通过引用传递以避免传递空指针更安全。但如果我这样做,我会收到编译器警告......

//EXAMPLE 2
void useFooPtr(int (*foo)()) {
    cout << "using foo @ " << &foo << endl; //using foo @ 0x16fb634c8
    //no warning here!
};

void useFooRef(int …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
105
查看次数

标签 统计

c++ ×1