首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++:如何在不定义参数化构造函数的情况下正确初始化基类成员变量?

在不定义参数化构造函数的情况下,可以使用初始化列表来正确初始化基类成员变量。

在C++中,初始化列表是在派生类构造函数的函数体之前使用冒号(:)来初始化基类成员变量的一种方式。通过在冒号后面列出基类成员变量并使用相应的参数进行初始化,可以确保基类成员变量在派生类对象创建时被正确初始化。

以下是一个示例代码:

代码语言:txt
复制
#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类没有默认构造函数或者没有定义无参构造函数,也可以正确初始化基类成员变量。

输出结果为:

代码语言:txt
复制
Base constructor called
Derived constructor called
Base value: 10
Derived value: 20

这样就实现了在不定义参数化构造函数的情况下正确初始化基类成员变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券