相关疑难解决方法(0)

功能参考

所以我只是使用函数指针,我记得你可以这样做:

void Foo()
{
}

int main()
{
    void(& func)() = Foo;

    func(); //::Foo();
}
Run Code Online (Sandbox Code Playgroud)

明显的优点是引用引用有效对象(除非它们被误用),或者在这种情况下是函数.

明显的缺点是你不能存储一个引用数组,并且不能将它们用于成员函数指针(至少就我所知).

我的问题:有没有人使用它们(即函数引用,而不是函数指针),如果是这样,在什么情况下你发现它们有用/有用?

在使用条件编译时,唯一可以看到它们有用的地方是绑定对某个函数的引用.

c++

49
推荐指数
3
解决办法
3万
查看次数

在这种情况下,有人可以解释"参考"和"指针"之间的区别吗?

当我读到这个问题的litb回答时,我了解到通过引用传递数组允许我们获得它的大小.我只是玩了一点代码,并尝试通过引用传递一个"函数",并且令人惊讶地(至少对我来说),这段代码编译:

void execute( void (&func)() ) // func is passed by reference!
{
    func();
}
Run Code Online (Sandbox Code Playgroud)

最后一个函数和这个函数之间有什么区别:

void execute( void (*func)() ) // func is passed by pointer!
{
    func();
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用VC2008,它在每种情况下产生不同的输出.奇怪的是,在函数指针的情况下,编译器会更好地优化代码:

void print()
{
    std::cout << "Hello References!";
}
void execute( void (&func)() ) // optimized
{
    func();
}
int main()
{
    00291020  call   print (291000h)
}
=========================================
// In this case, the compiler removes all function calls in the code!
void print() // optimized!
{
    std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ pointers reference

6
推荐指数
1
解决办法
517
查看次数

标签 统计

c++ ×2

pointers ×1

reference ×1