重载与隐藏 C++
Overloading vs Hiding c++
一个理论问题 - 内部定义函数会重载外部定义吗?例如:
int foo(){
class x{
public:
int foo() { return 1; }
int bar() { return foo(); }
}
return 0;
}
内部 foo 隐藏了类 x 中的外部 foo。有人可以举一个内部函数重载外部函数而不是隐藏它的示例吗?
谢谢!
我想你的意思是成员函数是否可以重载命名空间范围函数。
这里的"重载"一词本质上意味着两个或多个具有不同签名(参数数量和/或其类型)的函数可以访问名称查找
我认为不可能重载,以便相同的非限定名称可以代表成员函数或命名空间范围函数,具体取决于参数。 例如,
#include <cmath> // std::sin
struct S
{
void sin() const { cout << "By Odin!" << endl; }
void foo()
{
using std::sin;
sin( 3.14 ); // OK.
//sin() !Will not find the member func.
}
};
相反,如果没有 using
声明,成员函数可以称为非限定函数,但不能称为命名空间作用域函数。
函数重载意味着您有两个名称相同但参数不同的函数。您可以foo(int a)
一个函数,然后定义一个函数foo(double a)
而不隐藏另一个函数。
相关文章:
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 名称隐藏对静态函数继承的实例使用
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 从多个模板化基类派生时出现"隐藏重载的虚函数"警告
- 如何在 Omnet++ 5.6.1 中隐藏箭头?
- 在C++中隐藏键盘记录器的控制台窗口
- 从静态库使用时隐藏不透明结构的内容
- 隐藏用于聚合初始化的空基类
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- Qt中的包装连接方法隐藏了编译器所需的信息
- 隐藏重载虚拟功能的模板化访客:SFINAE 在使用?
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- C++ [错误] 声明'char '隐藏参数。什么意思?
- 隐藏由 WinAPI 调用创建的窗口