继承 class 中的默认构造函数参数
Default constructor parameters in inheritant class
我需要为继承的 class 的构造函数使用默认参数。
class A
{
public:
A(int data)
{
a_data = data;
}
~A(){}
int a_data;
};
class B : public A
{
public:
B(int in, int num = DATA) : A(num)
{
b_data = in;
}
const int DATA = 9;
int b_data;
};
int main()
{
B b(3);
int x = b.a_data;
return 0;
}
我发现 here 我可以为 child 的 class 构造函数使用默认参数。但是据说要用一个全局参数。
但我使用了来自 class“B”的数据,因此在释放此数据之前调用 A 构造函数。结果我在“x”中得到了一些垃圾,但不是 9.
!因此,问题是从另一个更具体的问题中提取出来的。我有一个基本的 class “Object”。还有一些 children 喜欢“Mob”或“Player”。 Object 里面有一个实体 (Box2D) object。当然,除了某些参数外,所有创建物理 [=26=] 的操作都是相同的。因此,我将算法存储在“Object”构造函数中,并将所有需要的数据放入 child classes 中。但是,在创建需要该数据的“Object”之前,我无法访问该数据。
Here 是一个依赖 class.
的解决方案示例
如有任何帮助,我将不胜感激。
你想要的是为A
提供一个默认构造函数
A(int data = 9)
所以 B
可以默认创建 A
参数 9
,
B(int in){...} // here the A part is constructed with 9
您的实际代码没有按照您的预期执行,因为 B
的构造函数首先尝试构造基础部分(在本例中为 A
),并且仅在初始化 A
的其余部分之后=13=].
使用默认值构造函数,例如:
B(int in, int num = 9) : A(num) {
b_data = in;
}
如图所示here。
我需要为继承的 class 的构造函数使用默认参数。
class A
{
public:
A(int data)
{
a_data = data;
}
~A(){}
int a_data;
};
class B : public A
{
public:
B(int in, int num = DATA) : A(num)
{
b_data = in;
}
const int DATA = 9;
int b_data;
};
int main()
{
B b(3);
int x = b.a_data;
return 0;
}
我发现 here 我可以为 child 的 class 构造函数使用默认参数。但是据说要用一个全局参数。
但我使用了来自 class“B”的数据,因此在释放此数据之前调用 A 构造函数。结果我在“x”中得到了一些垃圾,但不是 9.
!因此,问题是从另一个更具体的问题中提取出来的。我有一个基本的 class “Object”。还有一些 children 喜欢“Mob”或“Player”。 Object 里面有一个实体 (Box2D) object。当然,除了某些参数外,所有创建物理 [=26=] 的操作都是相同的。因此,我将算法存储在“Object”构造函数中,并将所有需要的数据放入 child classes 中。但是,在创建需要该数据的“Object”之前,我无法访问该数据。
Here 是一个依赖 class.
的解决方案示例如有任何帮助,我将不胜感激。
你想要的是为A
A(int data = 9)
所以 B
可以默认创建 A
参数 9
,
B(int in){...} // here the A part is constructed with 9
您的实际代码没有按照您的预期执行,因为 B
的构造函数首先尝试构造基础部分(在本例中为 A
),并且仅在初始化 A
的其余部分之后=13=].
使用默认值构造函数,例如:
B(int in, int num = 9) : A(num) {
b_data = in;
}
如图所示here。