C++ 是否可以替换父类?

C++ 是否可以替换父类?,c++,C++,如果我有一个从另一个继承的类,是否可以替换子类中继承的类?下面我有一个演示,演示了我要做的事情,但我不确定语法 #include <iostream> class singleNum { public: int m_a; singleNum(int a) { std::cout << "SETUP" << std::endl; m_a = a; } ~singleNum() {

如果我有一个从另一个继承的类,是否可以替换子类中继承的类?下面我有一个演示,演示了我要做的事情,但我不确定语法

#include <iostream>

class singleNum
{
public:
    int m_a;
    singleNum(int a)
    {
        std::cout << "SETUP" << std::endl;
        m_a = a;
    }
    ~singleNum()
    {
        std::cout << "CLOSEDOWN" << std::endl;
    }
};


class inheritor : public singleNum
{
public:
    inheritor(int a) : singleNum(a) {};
    reset(int b)
    {
        singleNum::this = *singleNum(b);
    }

};


int main()
{
    inheritor z(5);
    std::cout << z.m_a << std::endl;
    z.reset(5);
    return 0;
}
#包括
类singleNum
{
公众:
国际货币基金组织;
singleNum(inta)
{
标准::不能
无法交换或重置基类。如果它有自己的重置方法,则可以调用此方法,但不能再次调用构造函数

如果您想这样做,您应该这样做。然后您可以创建一个内部合成类的全新实例并替换现有实例。

否 无法交换或重置基类。如果它有自己的重置方法,则可以调用此方法,但不能再次调用构造函数


如果您想这样做,您应该这样做。然后您可以创建内部合成类的全新实例并替换现有实例。

您当前的演示并不难实现,但您需要修改父类:

#include <iostream>

class singleNum
{
public:
    int m_a;
    singleNum(int a)
    {
        std::cout << "SETUP" << std::endl;
        reset(a);
    }
    ~singleNum()
    {
        std::cout << "CLOSEDOWN" << std::endl;
    }

    virtual void reset(int b)
    {
        m_a = b;
    }
};


class inheritor : public singleNum
{
public:
    inheritor(int a) : singleNum(a) {}
    void reset(int b) override
    {
        singleNum::reset(b);
    }

};


int main()
{
    inheritor z(5);
    std::cout << z.m_a << std::endl;
    z.reset(5);
    return 0;
}
#包括
类singleNum
{
公众:
国际货币基金组织;
singleNum(inta)
{

std::cout您当前的演示并不难实现,但您需要修改父类:

#include <iostream>

class singleNum
{
public:
    int m_a;
    singleNum(int a)
    {
        std::cout << "SETUP" << std::endl;
        reset(a);
    }
    ~singleNum()
    {
        std::cout << "CLOSEDOWN" << std::endl;
    }

    virtual void reset(int b)
    {
        m_a = b;
    }
};


class inheritor : public singleNum
{
public:
    inheritor(int a) : singleNum(a) {}
    void reset(int b) override
    {
        singleNum::reset(b);
    }

};


int main()
{
    inheritor z(5);
    std::cout << z.m_a << std::endl;
    z.reset(5);
    return 0;
}
#包括
类singleNum
{
公众:
国际货币基金组织;
singleNum(inta)
{

你说的“替换”是什么意思?我们不能从代码中推断出,您自己承认,实际上并没有达到您的目标。@BoundaryPosition故意切片,如果我理解正确。在运行时,请删除父实现,并替换新构造的实现。如果我理解正确,您希望在子类中更改父c的属性lass.我将在父类的方法中实现此功能。要么是公共方法,要么是受保护的方法,然后由子类重新实现为公共方法。看起来像是设计气味,但是
op=
有什么问题吗?你说的“替换”是什么意思?我们不能从代码中推断出,您自己承认,实际上并没有达到您的目标。@BoundaryPosition故意切片,如果我理解正确。在运行时,请删除父实现,并替换新构造的实现。如果我理解正确,您希望在子类中更改父c的属性lass.我将在父类的方法中实现此功能。要么是公共方法,要么是受保护的方法,然后由子类重新实现为公共。这似乎是一种设计气味,但是
op=
有什么问题吗?