c++ 调用子类而不是父类的重写函数
c++ Calling the overridden function of the child class instead of the parent class
我正在尝试从我的子类调用方法convert(double):千克。我将如何调用被覆盖的函数而不是原始函数。下面是我的三个类的代码。
主.cpp
#include <iostream>
#include <string>
#include "Conversion.cpp"
using namespace std;
int userInput;
Conversion con;
void menu() {
cout << "Select an option: " << endl;
cout << "1) KG to Lbs " << endl;
cout << "2) Celsius to Kelvin " << endl;
cout << "3) Teaspoons to millilitres " << endl;
cout << "4) Multiplication tables (x) " << endl;
cout << "5) Powers Tables (x) " << endl;
cout << "6) Exit " << endl;
cin >> userInput;
switch(userInput) {
case 1:
cout << con.convert(23.56);
break;
default:
break;
}
};
int main() {
menu();
system("pause");
return 0;
}
转换.cpp
class Conversion {
public:
Conversion::Conversion(void) {
}
virtual double Conversion::convert(double varrr){
return varrr;
}
};
公斤.cpp
#include "Conversion.cpp"
double pounds;
class Kilogram : public Conversion {
public:
Kilogram::Kilogram() {
}
virtual double Kilogram::convert(double kilos) override {
pounds = (kilos * 2.2);
return pounds;
}
};
任何帮助将不胜感激!
代码调用基定义的原因是:
Conversion con;
。声明的类型和运行时类型都是基类型。若要调用重写的方法,运行时类型必须是给定的派生类型,并且声明的类型必须是派生类型,或者必须是指向基类型的指针或引用。那是:
Kilogram from_kilogram;
Conversion from_pounds;
Conversion* converter = &from_pounds;
if (is_kilograms) {
converter = &from_kilogram;
}
result = converter->Convert(weight_in_pounds);
相关文章:
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 从父类方法返回子类对象
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 将父类对象强制转换为子类的问题
- 在运行时选择父类的实现
- 如何在C++子类中访问父类的私有变量
- 将父类的子类的数据复制到具有相同父类的另一个类
- C++调用使用重写函数的父类函数
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 重写子类构造函数中的父类变量
- 重写父类的函数
- 从父级调用派生类重写函数.C++
- c++ 调用子类而不是父类的重写函数
- c++:重写父类中的模板成员函数
- 从父类继承时重写变量
- 重写父类的私有成员
- 是否有可能重写特定父类的虚函数
- 如何从父类构造函数引用重写的静态方法
- 如何重写父类的事件处理程序
- 如何重写父类的静态变量