gpt4 book ai didi

c++ - 将基类的const成员初始化为派生类

转载 作者:太空狗 更新时间:2023-10-29 23:31:14 24 4
gpt4 key购买 nike

public:
const int x;
base():x(5){}

};

class der : public base {
public:
der():x(10){}
};

der d;

我的目标是在创建基类实例时将 x 初始化为 5,在创建 der 类实例时将 x 初始化为 10。但是编译器给出了错误。x是继承自class base,为什么会报错?

最佳答案

稍作调整即可完成这项工作...

#include <cassert>

class base
{
public:
const int x;
base()
:x(5)
{
}

protected:
base(const int default_x)
:x(default_x)
{
}
};

class der: public base
{
public:
der()
:base(10)
{
}
};

struct der2: public base
{
der2()
:base()
{
}
};

int main()
{
base b;
assert(b.x == 5);
der d;
assert(d.x == 10);
der2 d2;
assert(d2.x == 5);
return d.x;
}

这提供了一个构造函数,派生类可以访问它,它可以提供一个默认值来初始化 base.x

关于c++ - 将基类的const成员初始化为派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7568611/

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