访问派生对象中的继承类

时间:2015-10-06 15:51:25

标签: c++

我有一个继承到派生类的基类。然后我实例化基础对象和派生对象。

class Base
    { public : 
            Base() {} 
         ~Base) {}  };

class Derived : public Base
    { public : 
            Derived() {} 
         ~Derived() {}  };

Base b;
Derived d;
Derived::Base::d = b;

现在我想将基类对象(b)复制到派生类对象(d)中,而不是它继承的基类。关于语法的任何想法?

2 个答案:

答案 0 :(得分:1)

我认为您想说的是,您希望将dist/scripts/main.js的数据成员初始化为某些Derived的成员。

您可以使用Base中的复制构造函数和Base中传递值的相应构造函数来执行此操作。

Code

Derived

您可以为转发构造函数和赋值运算符执行类似的操作。

答案 1 :(得分:0)

Derived::Base::d = b;
     

关于语法的任何想法?

这是错的。工作语法的选项包括:

  • static_cast<Base&>(d) = b;
  • d.Base::operator=(b1);

两者都很难看;子类中的赋值运算符隐藏基本版本的结果。正如在C ++中经常出现的那样,语法的丑陋表明这种操作很不寻常,重构可能是一个好主意。

通常,运算符重载和继承不能很好地混合,特别是如果您使用继承进行面向对象编程(即使用虚函数)。在这种情况下,通常会确保该类根本不可分配(C ++ 11非常简单,因为您只是在基类中delete生成的赋值运算符。)

您还应该阅读有关对象切片的更多信息,例如这两个问题的所有答案和评论: