在继承的类中重新定义常量成员变量

用户名

假设我希望在父类中定义一个成员变量,并在继承的类中设置其值。也许这些标识类中可用的功能或子类的性质。例如:

class A
{
public:
    inline int getX() { return x; }
protected:
    const int x = 0;
};

class B : public A
{
protected:
    const int x = 10;
};

class C : public A
{
protected:
    const int x = 50;
};

毋庸置疑,范围问题将阻止上述操作正常进行。但是,有没有办法使此工作按预期进行?

由于变量是用来标识继承类的性质的,因此,我希望它是const的-就我所知,如果它不是const且仅在构造函数中重新定义,则不会出现此问题。

用户名

在摆弄编译器以确保示例代码合理时,我实际上遇到了这样一个事实,即我试图定义常量的方式是C ++ 11特定的。这使我研究了以前的处理方式,然后我发现了这个问题,从而间接地揭示了该问题。

以这种方式定义变量应通过让基类在其构造函数中接受参数的形式来完成,形式为:

class A
{
public:
    A( const int& type ) : x(type) {}
    inline int getX() { return x; }
protected:
    const int x;
};

class B : public A
{
public:
    B() : A(10) {}
};

class C : public A
{
public:
    C() : A(50) {}
};

这将按预期工作,并允许继承的类重新定义常量x。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在继承的类中重新定义常量成员变量

来自分类Dev

C ++ 11中的常量成员变量

来自分类Dev

重新定义派生类中的静态成员。爪哇

来自分类Dev

PHP常量成员变量

来自分类Dev

如何使用$ _SERVER superglobals定义类的常量成员?

来自分类Dev

如何在Scala中定义常量成员?

来自分类Dev

C#重新定义类中的变量

来自分类Dev

如何在类定义中初始化向量成员变量?

来自分类Dev

模板和继承类中的ostream重载中的重新定义错误

来自分类Dev

C ++允许重新定义全局(常量)变量吗?

来自分类Dev

索引器可以在字典继承的类中重新定义吗?

来自分类Dev

在循环Python中重新定义变量

来自分类Dev

重新定义Javascript中的变量

来自分类Dev

重新定义Racket中的变量列表

来自分类Dev

在Julia中重新定义类型:常量的无效重新定义

来自分类Dev

Scala无法解析继承的Java接口常量成员

来自分类Dev

如何在特定应用中重新定义框架常量?

来自分类Dev

如何以编程方式重新定义变量的类?

来自分类Dev

在类中常量成员的初始化

来自分类Dev

在子类中重新定义变量类型(即变量隐藏)

来自分类Dev

使用未命名的命名空间在API中重新定义朋友类并访问私有成员?

来自分类Dev

重新定义变量Error

来自分类Dev

在抽象基类中声明静态,常量成员,将其分配给派生类中的值?

来自分类Dev

C ++:继承并重新定义函数

来自分类Dev

C ++中的错误:重新定义类构造函数

来自分类Dev

如何在C ++中重新定义类对象

来自分类Dev

cpp文件中的类类型重新定义

来自分类Dev

如何不重新定义JavaScript中的变量

来自分类Dev

如何不重新定义JavaScript中的变量

Related 相关文章

热门标签

归档