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.佩雷斯
它是成员在对象创建时的初始化,称为初始化列表.
你无法在其他地方初始化它们,比如说:
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 ++人员编写了这种语法!