C++ 我们是否可以在不使用虚函数的情况下根据其参数调用重写函数? 类mca1 { 公众: 无效功率(浮点m,整数n) { cout

C++ 我们是否可以在不使用虚函数的情况下根据其参数调用重写函数? 类mca1 { 公众: 无效功率(浮点m,整数n) { cout,c++,C++,您可以将基类函数拉入派生类作用域,使它们表现为重载函数 class mca1 { public: void power(float m,int n) { cout<<"RESULT OF "<<m<<"^"<<n<<"="<<pow(m,n); } }; class mca2:public mca1 { public: vo

您可以将基类函数拉入派生类作用域,使它们表现为重载函数

class mca1
{
    public:
        void power(float m,int n)
        {
           cout<<"RESULT OF "<<m<<"^"<<n<<"="<<pow(m,n);
        }
};
class mca2:public mca1
{
    public:
        void power(int m,int n)
        {
            cout<<"\nRESULT OF "<<m<<"^"<<n<<"="<<pow(m,n);
        }
};
类mca1
{
公众:
无效功率(浮点m,整数n)
{

coutJust
mca1::power
。它给出了错误“重载幂(double,int)的调用是不确定的。如果您尝试用double调用它,它会这样做,因为两种转换都是有效的。如果您用float或int调用它,它会做正确的事情。
mca2 m;m.power(2.0,1);
将失败,但
m.power(2.9f,1);
m.power(2,1);
将起作用。如果需要两者都起作用,可以为double再添加一个重载。甚至可以转发到float版本。这就是
c++
中函数重载的工作原理。double没有任何问题,但是float类型会给出一个错误吗?我猜你的意思是当使用文本调用func时tion?
2.0
是double类型,而不是float。如果你想要一个float,你需要写
2.0f
。同样,这只是语言的规则。
1
是和
int
,而不是
char
long
“text”
cont char*
而不是
std::string
等等。
class mca1
{
    public:
        void power(float m,int n)
        {
           cout<<"RESULT OF "<<m<<"^"<<n<<"="<<pow(m,n);
        }
};
class mca2:public mca1
{
    public:
        using mca1::power;
        void power(int m,int n)
        {
            cout<<"\nRESULT OF "<<m<<"^"<<n<<"="<<pow(m,n);
        }
};