[当我在基类中更改值,然后稍后创建子类的对象时,该子类将使用空参数而不是更改后的值创建。有没有一种方法可以使用基类的参数来派生类的对象?
示例:
Base.h
class Base
{
class Child;
public:
int number = 0;
Child *chilObject;
void Setup()
{
number = 5;
childObject = new Child;
}
};
Child.h
class Child :
public Base
{
};
main
int main()
{
Base base;
base.Setup();
cout << base.number << " : " << base->chilObject.number << endl;
cout << << endl;
}
输出:5:0
我只是问是否有一种方法可以使派生类对象自动获取基类变量。
这是通常在C ++中完成的方式:
#include <iostream>
class Base
{
public:
int number = 0;
virtual ~Base() = default;
void Setup()
{
number = 5;
}
};
class Child : public Base
{
// number exists here because of inheritance.
};
int main()
{
// Child object seen as Base object:
Base* base = new Child;
base->Setup();
// Child object seen as Child object:
Child* child = static_cast< Child* >( base );
// Both share the same 'number' variable, so:
std::cout << base->number << " : " << child->number << std::endl;
std::cout << std::endl;
// Free memory taken by 'new'.
delete base;
return 0;
}
产量:
5 : 5
在真实代码中,您可能会将Setup
虚拟化,但不进行强制转换。