C++ C++;初学者问题:构造函数
我刚刚遇到了一个构造函数的以下源代码C++ C++;初学者问题:构造函数,c++,C++,我刚刚遇到了一个构造函数的以下源代码 testProg::testProg() : CCProg() { m_UID = n_UID = 0; } 通常,根据我的理解,构造函数如下所示: testProg::testProg() { m_UID = n_UID = 0; } 所以我想知道这个CCProg()的目的是什么,如果有人 我可以很快告诉我这里发生了什么。谢谢 testProg似乎继承自CCProg,而CCProg的no-args构造函数
testProg::testProg() : CCProg()
{
m_UID = n_UID = 0;
}
通常,根据我的理解,构造函数如下所示:
testProg::testProg()
{
m_UID = n_UID = 0;
}
所以我想知道这个CCProg()的目的是什么,如果有人
我可以很快告诉我这里发生了什么。谢谢 testProg似乎继承自CCProg,而CCProg的no-args构造函数是从testProg构造函数的 假设正在调用的是无参数构造函数,那么实际上并不需要显式调用(不管怎样,它将被称为隐式)。因此,此语法的主要用途是调用不接受参数的父构造函数 例如:
testProg::testProg(int days) : CCProg(days)
{
m_UID = n_UID = 0;
}
在这里,如果省略显式调用,则如果有可用的无参数构造函数,则会调用隐式构造函数,否则编译将失败
请注意,CCProg是属于testProg的成员变量的名称也是可能的(尽管可能性要小得多),同样,不需要显式调用no args构造函数,因为它将被称为隐式。如果类如下所示,则它是显式调用基类构造函数:
class testProg : public CCProg
class testProg
{
Something CCProg;
// ...
或者(不太可能)调用初始化成员变量,如果类如下所示:
class testProg : public CCProg
class testProg
{
Something CCProg;
// ...
要么:
- 类testProg派生自类 CCProg,或
- 类testProg具有一个嵌入式 对象名为CCProg
testProg::testProg() : CCProg(1) { }
此语法允许您选择构造函数(如果CCProg大于1)并传递值。还要注意事情发生的顺序:CCProg是在输入testprog-ctor主体之前构造的。此代码的作用是显式调用类CCProg()的构造函数
在继承体系结构中,为了避免再次重写基类的构造函数,我们可以使用这种技术。正确。对于OP的好处,在C++ LINGO中,这些被称为“构造函数初始化列表”。