下面的代码有啥作用? 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++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章
关于css的问题,下面的代码中.heng中的text-indent在IE6中不起作用,有啥好的解决办法没?
RxJS.Observable debounce 有啥作用?