引用静态函数作为类定义的一部分是否有任何开销?
Is there any overhead with referencing static functions as part of a class definition?
我目前正在实现一些实用程序函数,用于实现我正在开发的一些库。我被迫选择将函数分割为静态成员,作为更通用的名称空间中类定义的一部分,或者输入更具体的名称空间,然后定义函数。我选择了前一种感觉,因为它在将这些实用程序类引入范围(使用或继承)的方式上更灵活,尽管我不确定这种设计选择是否有任何开销:
namespace Utilities {
struct CharUtil {
static void foo();
}
}
Utilities::CharUtil::foo();
比 慢
namespace Utilities {
namespace CharUtil {
void foo();
}
}
Utilities::CharUtil::foo();
?
前者使用继承更快吗?
这两种情况之间没有任何区别,除了函数的名称混乱。静态函数没有this
指针作为隐藏参数。编译器为这两个函数生成的代码将是相同的。
相关文章:
- 是否有任何C++功能可以对地图进行排序?
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- GoogleMock是否仍然打算与任何测试框架一起使用?
- C++中是否有任何函数等同于python中字典的get函数?
- 用于检查值是否为其任何参数的帮助程序函数
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- MPI:检查是否有任何进程已终止
- 如何检测除整数以外的任何内容是否传递给我的类构造函数?
- C++ 移动语义是否在任何情况下都能节省资源?
- 在调用其析构函数之前,是否有任何实际理由检查某些东西是否可破坏?
- c++ 编译器是否保护常量内存地址免受任何更改?
- 对于堆上的页面对齐内存分配是否有任何优化或不同的 API?
- 使用 std::addressof(std::cout) 而不是 &std::cout 是否有任何风险?
- 是否有任何区域设置会影响宽字符编码?
- 是否有任何模式等效于虚拟模板功能?
- 我的代码中是否有任何类型的错误,因为它没有给出正确的输出
- 使用静态成员函数而不是普通函数是否有任何开销?
- 是否有任何 C 标准函数将值"1"传递给所有 (%s)