默认值-在c++中重写签名时更改签名
default value - Changing signature while Overriding in C++
我有一个基类
class Shape{
public:
virtual int getArea()=0;
}
我想改变签名而overriding
像这样:
class Rectangle : class Shape{
public:
int getArea(int someParameter = 0){
return 0;
}
}
是否有可能以某种方式实现这一点,因为我使用默认值为新添加的参数?
我能看到的唯一解决方案是您实现int getArea()
和 int getArea(int)
,其中一个函数可以调用另一个(例如int getArea() { return getArea(0); }
)。
你需要重载你的虚函数。但是如果你重载了虚函数,你会得到一个警告"隐藏了重载的虚函数"
解决方案是用本地签名覆盖函数,用虚前缀重载。
的例子:
class A {
virtual void foo(int) {...}
};
class B: public A {
void foo(int i) override {
A::foo(i);
}
virtual void foo(const std::string& str) {
...
}
};
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- 在 C++ 中用派生类型重写成员函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 方法重写线程C++中的概念
- 为重写std::exception的库生成swig接口时出错
- 如何强制从重写方法调用重写的方法基方法?
- 用于C++的静态二进制检测或二进制重写工具和框架
- 如何将 if else 语句重写为 switch 语句
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 用 C 重写C++类
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 重写虚拟函数和继承
- C++调用使用重写函数的父类函数
- 重写打印函数而不是覆盖基类
- 不允许在类定义之外重写
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- C++:从抽象类重写纯虚拟运算符重载
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 重写函数不打印基类数据