当前位置:优学网  >  在线题库

关于函数中的函数声明

发表时间:2022-07-23 00:41:02 阅读:261

我们可以在函数体内声明函数:

void f(double) {
    cout << "f(double) called";
}

void f(int) {
    cout << "f(int) called";
}

void g() {
    void f(double); //Functions declared in non-namespace scopes do not overload
    f(1);           //Therefore, f(1) will call f(double)                  
}

在这种情况下,可以这样做是为了隐藏一个函数,例如f(int),但我的问题是:这真的是可以在另一个函数中声明一个函数的唯一原因吗?

或者换言之:在函数内部声明函数的可能性是否仅用于隐藏函数?

🎖️ 优质答案
  • 这也可用于将函数声明的可见性限制为仅一个特定函数.例如:

    文件1.cpp:

    #include <iostream>
    void f(double d) {
        std::cout << d << '\n';
    }
    

    文件2.cpp:

    int main() {
       void f(double);
       f(1); // prints 1
    }
    
    void g() {
        f(2); // error: 'f' was not declared in this scope
    }
    
  • 相关问题