我刚刚遇到了以下构造函数的源代码。

testProg::testProg() : CCProg()
{
m_UID = n_UID = 0;
}

通常,根据我的理解,构造函数如下所示:
testProg::testProg()
{
m_UID = n_UID = 0;
}

所以我想知道CCProg()的目的是什么,如果有人
可以很快告诉我这里发生了什么。谢谢!

最佳答案

似乎testProg继承自CCProg,而CCProg的no-args构造函数是从testProg构造函数的initialization list调用的。

鉴于正在调用的是无参数构造函数,因此实际上并不需要显式调用(无论如何都将其称为隐式调用)。因此,此语法的主要用途是调用确实带有参数的父构造函数。

例如:

testProg::testProg(int days) : CCProg(days)
{
m_UID = n_UID = 0;
}

在这里,如果省略了显式调用,则在无参数构造函数可用的情况下将其隐式调用,否则编译将失败。

注意,也有可能(尽管可能性很小)CCProg是属于testProg的成员变量的名称-再次,不需要显式调用no-args构造函数,因为它将被称为隐式。

关于c++ - C++初学者问题:构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1150936/

10-11 22:43
查看更多