元始天尊 发表于 2014-2-22 00:42:33

函数指针你知道,你知道函数引用?

无论任何书都会有这段内容:
指针和引用是双胞胎,前者是C而后者是C++的,两者底层实现完全一样(曾有一本很nb的书让我放弃这个看法),事实上也不可能不一样
引用的话必须绑定当前已存在的值或对象,定义时就要以该值或对象初始化,之后的修改均看做对原值或对象的操作。
函数指针你是知道的,他就是指向函数的指针,那函数引用呢?现在我提出函数引用这个定义,定义为必须用函数初始化的函数变量来对比一下,看此例
#include "stdio.h"

//声明类型
typedef int (&MYGETCHAR1)(void);//函数指针形式1
typedef int (*MYGETCHAR2)(void);//函数引用形式2

int main(int argc, char* argv[])
{
        MYGETCHAR1 c=getchar;
        MYGETCHAR2 d=getchar;

        //定义变量
        int (*func0)(void)=getchar;//函数指针形式2
        int (&fund0)(void)=getchar;//函数引用形式2
        int (*func1)(void)=NULL;//正确
        int (&fund1)(void)=NULL;//编译错误
        int (*func2)(void)=NULL;//正确
        int (&fund2)(void)=NULL;//编译错误

        return 0;
}


代码中MYGETCHAR1是函数引用而MYGETCHAR2是函数指针,和函数指针一样,引用指针也有2种形式
同样,函数引用也必须初始化
随意百度吧,如果你发现能搜到“函数引用”这个词,尽管来找我


0xAA55 发表于 2020-6-22 11:25:09

引用形式可以在封装接口的时候,避免不必要的NULL检查,是个不错的东西。

系统消息 发表于 2020-6-24 20:53:50

的确很难搜到函数引用相关的资源,不过我在上大学期间就自己想到过这个问题,就自己尝试了函数引用写法,结果完全正确。
页: [1]
查看完整版本: 函数指针你知道,你知道函数引用?