下面的代码有啥作用? C++ [重复]

Posted

技术标签:

【中文标题】下面的代码有啥作用? C++ [重复]【英文标题】:What does the following code do? c++ [duplicate]下面的代码有什么作用? C++ [重复] 【发布时间】:2017-07-20 01:28:26 【问题描述】:

我的教授今天在黑板上写了一些我看不懂的代码。它似乎是一个派生类构造函数调用一个基类构造函数,但我不确定。如下:

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;

;

【问题讨论】:

你的怀疑是正确的 相关:***.com/q/7665021/1896169***.com/q/926752/1896169 你可以问教授(或助教) 您可以轻松完成自己的实验。 Here和here,然后研究为什么第一个编译失败,而老师的版本编译成功。 如果你不明白,你应该请你的老师解释。他们获得报酬是为了向您提供所需的信息,并确保您了解所提供的材料。 【参考方案1】:

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

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

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

派生类是从基类派生或继承的。 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 的值。

此表示法使用传递给派生类的值“a”调用基类构造函数。

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

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

此外,派生类成员 z 现在拥有 a 的值。

【讨论】:

【参考方案4】:

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

在您的代码中,调用基类构造函数,然后调用派生类构造函数。 了解更多信息

Order of Construction

【讨论】:

【参考方案5】:

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

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

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

【讨论】:

以上是关于下面的代码有啥作用? C++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

这些 C++ 代码片段有啥作用?

关于css的问题,下面的代码中.heng中的text-indent在IE6中不起作用,有啥好的解决办法没?

linux:linux下面的磁盘限额有啥作用?谢谢

RxJS.Observable debounce 有啥作用?

spark中的lit()有啥用?下面的两段代码返回相同的输出,使用 lit() 有啥好处 [重复]

这种奇怪的 C++ 语法有啥作用? [复制]