C++,半结肠和花括号之间的东西是什么

Bob*_*y W -2 c++ blackberry-10

我从黑莓网站上下载了一个例子.我注意到它们在花括号之前有一些值,在冒号后用逗号分隔.

这些是什么,它们如何运作?

编辑:这只是实例化值的另一种方式吗?与在花括号内设置这些值相同吗?

using namespace bb::cascades;
using namespace bb::pim::contacts;

//! [0]
AddressBook::AddressBook(QObject *parent)
    : QObject(parent)
    , m_contactService(new ContactService(this))
    , m_model(new GroupDataModel(this))
    , m_contactViewer(new ContactViewer(m_contactService, this))
    , m_contactEditor(new ContactEditor(m_contactService, this))
    , m_currentContactId(-1)
{
    // Disable grouping in data model
    m_model->setGrouping(ItemGrouping::None);

    // Ensure to invoke the filterContacts() method whenever a contact has been added, changed or removed
    bool ok = connect(m_contactService, SIGNAL(contactsAdded(QList<int>)), SLOT(filterContacts()));
    Q_ASSERT(ok);
    ok = connect(m_contactService, SIGNAL(contactsChanged(QList<int>)), SLOT(filterContacts()));
    Q_ASSERT(ok);
    ok = connect(m_contactService, SIGNAL(contactsDeleted(QList<int>)), SLOT(filterContacts()));
    Q_ASSERT(ok);

    // Fill the data model with contacts initially
    filterContacts();
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 5

这是一个成员初始化列表(它是一个冒号,而不是一个分号).

它使用括号中的值初始化成员,因此(例如)m_contactService(new ContactService(this))与放置m_contactService = new ContactService(this);在构造函数体内的内容大致相同.

但是有一些差异 - 成员初始化列表确实初始化而不是分配值.这意味着它可以用于const值,基类和引用等不允许赋值的内容.