sách gpt4 ăn đã đi

c++ - 两个函数声明共享一个定义,这合法吗?

In lại 作者:太空狗 更新时间:2023-10-29 20:59:26 26 4
mua khóa gpt4 giày nike

另一个新手问题:

int foo(); // outer foo function
int chính() {
int foo(); // inner foo function
cout << foo() << endl;
}

int foo() { // one definition
return 42;
}

根据我的理解,函数或对象的内部声明将隐藏外部声明(如果有的话)。
所以上面的outer foo()和inner foo()应该是两个不同的函数。
但他们共享一个定义,这似乎令人困惑。两个不同的函数共享一个定义是否合法?两个不同的对象变量怎么样?(这是 C++ 问题,但语法似乎也适合 C。)

biên tập:

使用指向函数的指针验证了外部和内部 foo 是相同的函数:

pf_outer = 0x400792

pf_inner = 0x400792

câu trả lời hay nhất

nội bộ đồ ăn 只是同一 foo() 的另一个向前减速。考虑以下示例:

 int foo();
int foo();

int chính() {
cout << foo() << endl;
}

int foo() { // one definition
return 42;
}

这将编译并运行并且没有歧义,因为编译器将使用相同的代码替换相同函数的使用。

可以重新声明函数。

关于c++ - 两个函数声明共享一个定义,这合法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688557/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress