gpt4 book ai didi

c++ - 在C++中使用指令和声明

转载 作者:行者123 更新时间:2023-12-01 14:44:19 26 4
gpt4 key购买 nike

使用指令是否具有本地范围?

我在C++入门书中发现“函数中的using指令将 namespace 名称视为在函数外部声明”

如果就像在函数外部声明一样,为什么不使这些名称可用于文件中的其他函数。

namespace Jill 
{
double bucket(double n) { ... }
double fetch;
struct Hill { ... };
}
int main()
{
using namespace Jill;
return 0;
}
int foom()
{
Hill top; //error
Jill::Hill crest; //valid
}

如果语句“函数中的using指令将 namespace 名称视为在函数外部声明”,则为真
`Hill top`

会有效吗?

最佳答案

" a using directive in a function treats the namespace names as being declared outside the function"



namespace 名称被视为在函数外部声明,但是不会更改其他函数的实现的行为,即,这些名称仅在引入using指令的函数中可见,而在任何情况下都不可见。其他功能。

另一方面,如果在函数范围内有一个局部函数声明,则将首先选择它,而不是使用指令所引入的声明。

例如
namespace Jill 
{
double bucket(double n) { std::cout << "Jill::bucket\n"; return 0.0; }
double fetch;
struct Hill {};
}

int main()
{
double bucket(double);
using namespace Jill;
bucket(0.0); // ::bucket but not Jill::bucket will be selected
return 0;
}

double bucket(double n) { std::cout << "::bucket\n"; return 0.0; }

LIVE

关于c++ - 在C++中使用指令和声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58579018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com