c++ - 是否可以从继承类对象访问基类的构造函数?

标签 c++ class object initialization

所以我想知道是否真的可以从继承的类对象访问基类的构造函数?像这样的东西:

#include <iostream>

class Foo
{
public:
    Foo(int i)
    {
        id = i;
    }
protected:
    int id;
};

class Bar: public Foo
{
public:
    void barFunc()
    {
        if (id>0)
        {
            std::cout << "Bar stuff" << std::endl;
        }
        else
        {
            std::cout << "Other Bar stuff" << std::endl;
        }
    }
};

int main()
{
    Foo fooObj(7);
    Bar b; //is it possible to access 'id' in Bar whilst initializing 'id' in Foo?
    b.barFunc();
}

如果我只是运行 barFunc() 对象 b 将表现得好像“id”还没有被初始化。

有一项任务要做,但我不确定如何使用他们给我的代码。 谢谢! :)

最佳答案

首先创建匹配基类的构造函数:

Bar(int i) : Foo(i) { }

然后

Bar b(1);
b.barFunc();

不需要

Foo fooObj(7)

关于c++ - 是否可以从继承类对象访问基类的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33054464/

相关文章:

java - 什么是 Java 类路径和路径?

java - 从 JSP 页面运行 java 应用程序

javascript - 如何将 'this' 从 A 类传递到 B 类?

javascript - 请解释一下这个 javascript 函数的定义及其最佳用途(模块模式)

c++ - 为什么C++标准队列有back函数,stack没有bottom函数?

c++ - C++ 数组中的 Gettin 左值错误

javascript - 将特定的 JS 对象值附加到它被单击的 div

javascript - 是否有所有属性的 Object.watch/__noSuchMethod__ 可用的垫片?

c++ - std::swap 在构造函数、赋值运算符和析构函数方面如何工作?

c++ - 如何正确/高效地处理指向 std::vector 元素的指针?