在计算后,在基类之后调用参数化构造函数
Call parameterised constructor after base class after some calculation
我希望能够使用来自派生类构造函数的输入参数进行一些计算后,可以调用基类的参数化构造函数。
对我所相信的,当您称为派生类的构造函数时,基类的默认构造函数称为...
(除非其参数化的构造函数被特别称为:)
DerivedClass(int a,int b) : BaseClass(a,b) {}
无论如何在那里做类似:
的事情DerivedClass(int a,int b) {
a += 2;
b += 5;
BaseClass(a, b); // <- this line I am questioning :(
}
我认为上面的内容不起作用,因为BaseClass
的默认构造函数已经被称为..
no,您不能在派生的构造函数中推迟调用基本构造函数。调用构造函数的唯一方法是通过构造函数初始化列表,该列表是在构造函数之前执行的。如果否则,您可能会看到很多噩梦代码,其中尚未构建对象的基本部分,但派生的部分已经在尝试初始化自己...
在您的情况下,您可以做
DerivedClass(int a,int b) : BaseClass(a + 2, b + 2) {}
ps:您的代码中有一个错误,当您调用BaseClass
时,您不应该使用BaseClass(int a, int b)
,而应仅使用BaseClass(a, b)
,因为它是函数调用,而不是声明。
您不能推迟基本构造函数,但是您 can 使用函数。
例如:
DerivedClass(int a, int b) : BaseClass(adjust_a(a), adjust_b(b)) {}
相关文章:
- C++:使用运算符 = 调用多参数构造函数
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 好奇的混合与可变参数构造函数
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 为什么我们需要创建一个单参数构造函数来使用临时的无名称对象
- 在可变参数构造函数中初始化常量数组
- C++ 显式多参数构造函数歧义
- 零一参数构造函数
- 可变参数构造函数中的 SFINAE
- 当没有显式关键字与单参数构造函数一起使用时,编译器可以发出警告
- 可变参数类模板和可变参数构造函数
- 确保模板参数类型与其可变参数构造函数的类型匹配
- C++默认参数构造函数与内联初始化优先级
- 如何在 c++ 中将包含复制构造函数的类的参数构造函数称为私有?
- 自动存储中没有无参数构造函数的类对象和异常
- 警告:用两个参数构造函数返回对象时,表达结果未使用
- 如何在C++中调用无参数构造函数
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- 可变参数构造函数优先于用户提供的移动构造函数,除非默认
- 如何从可变参数构造函数参数构造任何对象?