奇怪的构造函数

Bil*_*hon 2 c++ syntax constructor definition

好吧,我在这里会很简单,我只是在c ++中有一段代码,我不确定我是否真的理解并需要一些帮助.

好的,为了简化,我只想说我有一个这样定义的类:(真正的类有点复杂,但这才是重要的)

class myClass : public Runnable {
    Semaphore *m_pMySemaphore;
    __Queue<Requests> *m_pQueue;
    Request m_Request;
    VetorSlotBuffer *m_vetorSlotBuffer;
}
Run Code Online (Sandbox Code Playgroud)

到目前为止没有任何问题,myClass只是一个普通的类,它有3个成员实际上是指向其他类的指针和类Request的对象,这些类的实现对我的观点来说并不重要.

然后当这个人为myClass实现构造函数时,他或她这样做了:

myClass::myClass() : m_pMySemaphore(0), m_pQueue(0), m_vetorSlotBuffer(0) { }

很明显,这三个变量被构造函数处理得因为它们是指针,我是对的吗?但那是什么样的语法?我通过这样做将指针设置为null吗?我已经看过一些c ++,但从来没有找到类似的东西.

其次,在构造函数声明之后处理":"的是什么?我见过但从未花时间去调查.这是内心阶级还是什么?

非常感谢你提前.尼尔森R.佩雷斯

cly*_*yfe 5

它是成员在对象创建时的初始化,称为初始化列表.
你无法在其他地方初始化它们,比如说:

class X { 
    int i = 0; // error bad syntax
} 
Run Code Online (Sandbox Code Playgroud)

在构造函数中使用赋值,如果它们是const:

class X { 
    const int i; 
    X(){ 
        i = 0; // error it's a const
    } 
} 
Run Code Online (Sandbox Code Playgroud)

所以c ++人员编写了这种语法!