在不定义参数化构造函数的情况下,可以使用初始化列表来正确初始化基类成员变量。
在C++中,初始化列表是在派生类构造函数的函数体之前使用冒号(:)来初始化基类成员变量的一种方式。通过在冒号后面列出基类成员变量并使用相应的参数进行初始化,可以确保基类成员变量在派生类对象创建时被正确初始化。
以下是一个示例代码:
#include <iostream>
class Base {
public:
Base(int value) : baseValue(value) {
std::cout << "Base constructor called" << std::endl;
}
void printValue() {
std::cout << "Base value: " << baseValue << std::endl;
}
private:
int baseValue;
};
class Derived : public Base {
public:
Derived(int baseValue, int derivedValue) : Base(baseValue), derivedValue(derivedValue) {
std::cout << "Derived constructor called" << std::endl;
}
void printValue() {
Base::printValue();
std::cout << "Derived value: " << derivedValue << std::endl;
}
private:
int derivedValue;
};
int main() {
Derived derived(10, 20);
derived.printValue();
return 0;
}
在上述代码中,Base
类有一个参数化构造函数,用于初始化baseValue
成员变量。Derived
类继承自Base
类,并且在其构造函数中使用初始化列表来调用Base
类的构造函数,并传递相应的参数进行初始化。
通过这种方式,即使Base
类没有默认构造函数或者没有定义无参构造函数,也可以正确初始化基类成员变量。
输出结果为:
Base constructor called
Derived constructor called
Base value: 10
Derived value: 20
这样就实现了在不定义参数化构造函数的情况下正确初始化基类成员变量。
领取专属 10元无门槛券
手把手带您无忧上云