c ++ 1y将允许派生类对基类变量进行类内初始化吗?

xx

代替这个:

class base
{
    protected:
        base( int value )
            : member{value}
        {}

        int member = 0;
};

class derived_1 : public base
{
    public:
        derived_1()
            : base{ 1 }
        {}
};

class derived_2 : public base
{
    public:
        derived_2()
            : base{ 2 }
        {}
};

这将很有用:

class base
{
    protected:
        int member = 0; // Default value
};

class derived_1 : public base
{
    base::member = 1; // Instead of passing it to a base class constructor
};

class derived_2 : public base
{
    base::member = 2;
};

c ++ 1y是否支持此语法或类似语法?

恶魔

不,目前没有计划允许这样做。允许初始化程序绕过基类构造函数(如果有)似乎有些奇怪。允许基类说明符包含一个初始化程序似乎更有意义:

class derived_1 : public base = {1}
{
};

如果您可以解释该语言的益处(您有具体的用例吗?),则可以考虑提交提案

解决方法是,您可以考虑使用类模板:

template<int I = 0>
class base { protected: int member = I; };

class derived_1: public base<1> {};

如果需要保留公共基类,请使用中间基类模板:

class base { protected: int member = 0; };

template<int I>
class base_init: public base { base_init() { base::member = I; } };

class derived_1: public base_init<1> {};

不确定是否相关,但是有关聚合和聚合初始化的规则在C ++ 14中可能会发生变化:http//www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3653。 html

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++-在派生类中静态初始化基类保护的成员变量

来自分类Dev

初始化之前,C ++派生类在基类上调用方法

来自分类Dev

在C ++中初始化派生类参数

来自分类Dev

C ++模板和派生类成员初始化

来自分类Dev

在C ++中初始化派生类参数

来自分类Dev

C ++可以初始化基类的基类吗?

来自分类Dev

可以将匿名派生类的地址分配给基类指针C ++吗?

来自分类Dev

创建类型为<派生类>的变量以将<基类>对象存储在C#中

来自分类Dev

如何禁止C ++派生类从基类派生,但允许另一个派生类

来自分类Dev

派生类的C++初始化列表编译失败,为什么?

来自分类Dev

基类变量用派生类初始化

来自分类Dev

C ++派生类

来自分类Dev

派生类C ++

来自分类Dev

C ++-基类指针,方法指针,是指派生类,方法吗?

来自分类Dev

C ++继承:指向基类的派生类指针调用派生类方法

来自分类Dev

C ++在派生类和基类中使用两个相同名称的变量

来自分类Dev

C ++基类和派生类方法的麻烦

来自分类Dev

如何从C ++中的基类访问派生类的属性?

来自分类Dev

包含基类/派生类对象的C ++数组

来自分类Dev

C ++:在派生类成员上调用基类方法

来自分类Dev

C#基类方法返回派生类

来自分类Dev

包含基类/派生类对象的C ++数组

来自分类Dev

无法在C ++的派生类中重载基类方法

来自分类Dev

C ++如何从多个派生类调用基类方法?

来自分类Dev

基类和派生类 c++11

来自分类Dev

在 C# 中使用基类和派生类实例化数组中的对象

来自分类Dev

在C ++ 11中将基类运算符用于派生类

来自分类Dev

将数组指针从派生类传递到基类C ++

来自分类Dev

C ++-将基类指针转换为派生类指针

Related 相关文章

热门标签

归档