c++ - 如何将参数传递给 C++ 中的基类构造函数

标签 c++ inheritance

在下面的代码中,我希望得到 5 的输出,但我却得到了任意垃圾。为什么 x 没有设置为 5?当我声明派生类对象并将x的值设置为5时,构造函数不会被调用吗?

#include <iostream>


using namespace std;

class Base{

public:
    int x;
    Base(){
    }
    Base(int arg)
    {
        x = arg;
    }
};

class Derived: public Base{
public:
    Derived():Base(5){
    }

};

int main() {


   Base obj2;
Derived obj1;
   cout << obj2.x;

    return 0;
}

最佳答案

在您的示例中,您没有将任何值传递给 obj2 构造函数,因此您的 x 成员仍未初始化。

请记住,obj1obj2 不共享任何成员,它们是独立的、断开连接的实例。

关于c++ - 如何将参数传递给 C++ 中的基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221998/

相关文章:

c++ - 用 C++ 设计 Qt Creator 的侧边栏

c++ - 编译器的 `-O0` 选项和 `-Og` 选项有什么区别?

java - 编译器看不到main方法

c++ - 这个函数调用真的有歧义吗?

java - 当我们对对象进行类型转换时会发生什么。?

c# - 在 C# 中覆盖派生类中的常量

c++ - 如果需要创建一个 ofstream

c++ - 在linux中用gcc命令编译C代码时如何包含lib

c++ - 将类类型存储为映射值并根据映射键初始化新类

添加到方法的 c++ 自定义异常给出错误