子类通过初始化列表调用父类构造函数,若父类无默认构造函数则必须显式调用,否则编译器自动调用默认构造函数,多重继承时按继承顺序依次调用各父类构造函数。

在C++继承中,子类无法直接“调用”父类的构造函数,但可以在子类构造函数的初始化列表中显式指定调用父类的某个构造函数。如果未显式指定,编译器会自动尝试调用父类的默认构造函数(无参构造函数)。
在子类构造函数中,通过初始化列表来调用父类的构造函数是最常见的方式。
#include <iostream>
using namespace std;
class Parent {
public:
Parent(int x) {
cout << "Parent constructor with x = " << x << endl;
}
};
class Child : public Parent {
public:
Child() : Parent(10) { // 显式调用父类构造函数
cout << "Child constructor" << endl;
}
};
在这个例子中,Child() 构造函数通过 : Parent(10) 调用了父类带一个参数的构造函数。
如果父类有默认构造函数(无参或所有参数都有默认值),子类可以不显式调用:
立即学习“C++免费学习笔记(深入)”;
class Parent {
public:
Parent() {
cout << "Default Parent constructor" << endl;
}
};
class Child : public Parent {
public:
Child() { // 编译器自动调用 Parent()
cout << "Child constructor" << endl;
}
};
在多重继承中,子类需在初始化列表中分别调用每个父类的构造函数:
class A {
public:
A(int a) { cout << "A: " << a << endl; }
};
class B {
public:
B(int b) { cout << "B: " << b << endl; }
};
class C : public A, public B {
public:
C() : A(1), B(2) { // 按继承顺序调用
cout << "C constructor" << endl;
}
};
基本上就这些。关键点是使用初始化列表显式调用父类构造函数,尤其是在父类没有默认构造函数时必须这样做。
以上就是c++++中怎么调用父类的构造函数_c++继承中父类构造函数调用方法的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号