C++初学者问题:构造函数

2 c++

我刚刚看到了构造函数的以下源代码.

testProg::testProg() : CCProg()  
{  
m_UID = n_UID = 0;  
}  
Run Code Online (Sandbox Code Playgroud)

通常,根据我的理解,构造函数如下所示:

testProg::testProg()    
{    
m_UID = n_UID = 0;    
}    
Run Code Online (Sandbox Code Playgroud)

所以我想知道这个CCProg()的目的是什么,如果有人可以快速告诉我这里发生了什么,那将会很棒.谢谢!

Wil*_*iam 16

似乎testProg继承自CCProg,并且从testProg构造函数的初始化列表中调用了CCProg的no-args构造函数.

鉴于它是被调用的no-args构造函数,实际上并不需要显式调用(无论如何它都会被称为implicity).因此,这种语法的主要用途是调用确实接受参数的父构造函数.

例如:

testProg::testProg(int days) : CCProg(days)  
{  
m_UID = n_UID = 0;  
}
Run Code Online (Sandbox Code Playgroud)

在这里,如果省略了显式调用,那么如果一个可用,则no-args构造函数将被称为implicity,否则编译将失败.

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

  • 正确.为了OP的好处,这些在C++术语中被称为"构造函数初始化列表". (2认同)

Ric*_*dle 6

它是对基类构造函数的显式调用,如果类看起来像这样:

class testProg : public CCProg
Run Code Online (Sandbox Code Playgroud)

或者(不太可能)调用初始化成员变量,如果类看起来像这样:

class testProg
{
    Something CCProg;
    // ...
Run Code Online (Sandbox Code Playgroud)