gpt4 book ai didi

C++ 继承具有不同默认参数值的函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:10:02 24 4
gpt4 key购买 nike

我想继承一个成员函数而不重新定义它,但给它不同的默认值。我该怎么办?

class Base{
public:
void foo(int val){value=val;};
protected:
int value;
};

class Derived : public Base{
public:
void foo(int val=10);
};

class Derived2 : public Base{
public:
void foo(int val=20);
};

void main(){
Derived a;
a.foo();//set the value field of a to 10
Derived2 b;
b.foo();//set the value field of b to 20
}

最佳答案

不要使用默认值,使用重载:

class Base{
public:
virtual void foo() = 0;

protected:
void foo(int val) { value = val; }

private:
int value;
};

class Derived : public Base {
public:
void foo() override { Base::foo(10); }
};

class Derived2 : public Base {
public:
void foo() override { Base::foo(20); }
};

override 修饰符是 C++11。

关于C++ 继承具有不同默认参数值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com