我已经在一些c ++代码中看到了上述内容,并想知道发生了什么。任何人都能解释这对我意味着什么吗?
SomeManager::SomeManager()
: m_someinterface(NULL)
, m_someinterface(NULL)
{
}
答案 0 :(得分:4)
我认为你的意思是以下
SomeManager::SomeManager() : m_someinterface(NULL) , m_someinterface(NULL)
{
}
它是具有mem-initializer list
的类SomeManager
的构造函数的定义
m_someinterface(NULL) , m_someinterface(NULL)
初始化其子对象(数据成员和/或基类子对象)。
考虑到数据成员应具有不同的名称,例如 m_someinterface1 m_someinterface2。
这是一个简单的例子
class A
{
public:
A();
private:
int x;
int y;
};
A::A() : x( 10 ), y( 20 ) {}
创建类的对象后,如
A a;
其数据成员a.x
和a.y
的对应值为10和20。
另一个显式调用基类构造函数的例子
class A
{
public:
A( int x, int y ) : x( x ), y( y ) {}
private:
int x;
int y;
};
class B : piblic A
{
public:
B( int );
private:
int z;
};
B::B( int z ) : A( z / 10, z % 10 ), z( z ) {}