以下代码有什么作用? C ++

时间:2017-07-20 01:28:27

标签: c++ inheritance

我的教授今天在董事会上写了一些我不明白的代码。它似乎是一个派生类构造函数调用基类构造函数,但我不确定。这是:

class Base{
int x, y;
public:
Base(int,int);
};

class Derived: public Base{
int z;
public:
//what does the colon and the code following it do here? 
Derived(int a):Base(a, a+5){
z = a;
}
};

5 个答案:

答案 0 :(得分:2)

这是Inheritance的基本示例。基本上,Derive继承自Base

描述代码:类Base有两个私有整数成员(x, y),应该使用给定的构造函数初始化。

Derived继承自B,并拥有自己的私有成员(z)。

Derived的构造函数使用参数*(Base)初始化a, a+5类,然后将值a分配给私有参数z

**(我们没有构造函数的实现,但我们可以假设(x = a, y = a + 5))*

答案 1 :(得分:0)

我相信它会用任何' a'来初始化Derived类。 value被传递到Derived类的构造函数中,第二个值被初始化为+ 5。然后将值z设置为传递给Derived类的构造函数的任何值。冒号初始化基类中的项目。

答案 2 :(得分:0)

Derived类派生自或继承自Base类。 Base类在其构造函数中接受两个整数。

我们假设这是Base类的定义方式,

class Base {

    int x;
    int y;

public:

    Base(int x, int y) {
        this->x = x;
        this->y = y;
    }
}

声明Derived类的方式允许Derived类从Base类继承x和y的值。

此表示法调用Base类构造函数,并将值“a”传递给Derived类。

使Base类的第一个参数等于a,第二个参数等于a + 5。

如果我在实例化Derived类时传递了5,那么我将使用值5和10调用Base类构造函数。

此外,Derived类成员z现在保存a的值。

答案 3 :(得分:0)

构造函数可以按顺序执行,在初始化之前需要一些准备工作

在代码中

,调用基类构造函数,然后调用Derived类构造函数。 了解更多信息

Order of Construction

答案 4 :(得分:-1)

尝试搜索c++ delegate constructor或查看此链接。 在您拥有的代码中,调用Base构造函数,然后运行Derived构造函数的主体。

您可以跳到示例部分并阅读行注释。

http://en.cppreference.com/w/cpp/language/initializer_list