C中翻译单元本地static函数的C++等价是多少?
例如,具有以下内容bar.c:
static void bar() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
在C++中,它是否会像一个私有成员函数一样编写
class foo {
void bar();
};
void foo::bar() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
私有成员函数隐式地将this指针引入为参数,因此它与C样式static函数不具有可比性.但即使是private static成员函数bar()也会在公共接口中看到(并且对于链接器而言仍然可访问),并且也不具有可比性.
虽然这些函数的可访问范围似乎相似,但这些选项看起来不像上面提到的C风格static函数语法的良好替代.
等效于未命名命名空间中的函数,仅对当前转换单元可见吗?
namespace {
void bar() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)