C++,分号和大括号之间的内容是什么
C++, what is the stuff between between the semi colon, and curly braces
我从黑莓网站下载了一个例子。我注意到它们在大括号之前和冒号之后有一些值,用逗号分隔。
这些是干什么用的,它们是如何工作的?
编辑:这只是实例化值的另一种方式吗?与在大括号内设置这些值相同吗?
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();
}
这是一个成员初始值设定项列表(它是冒号,而不是分号)。
它用括号中的值初始化成员,因此(例如)m_contactService(new ContactService(this))
与将m_contactService = new ContactService(this);
放入构造函数的主体中大致相同。
但也有一些区别——成员初始值设定项列表实际上是初始化的,而不是赋值。这意味着它可以用于不允许赋值的常量值、基类和引用。
这些是成员初始值设定项列表。
它们用于初始化对象的成员。请注意初始化和分配之间的区别。您也可以"初始化"构造函数中的成员,但这实际上是一个赋值。这意味着,成员将预先初始化(默认构造)。
使用成员初始值设定项列表比构造函数中的赋值更有效,并且是良好的C++风格。
相关文章:
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 不同的类或结构初始化方法之间的性能差异是什么?
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 超市管理系统的类别之间应该是什么关系?
- 在C++和Python之间交换数据的最快方法是什么?
- 计算两个uint8_t变量之间差值的最快方法是什么?
- 在 c++ 中,在线程之间共享数据容器的最佳方法是什么?
- 使用静态类成员而不是私有字段之间的速度差异是什么?
- C++和Python之间平等含义的区别的根源是什么?
- 在查找子集中元素和元素数量之间的二进制比较背后的逻辑是什么?
- 类和变量之间的"ampersand operator"是什么意思?
- $(objs):%.o:%.cpp和$(objs):$(objs:.o = .cpp)之间的差异是什么
- 在QTcpSocket和python套接字之间交换数据的正确方法是什么?
- cin.ignore(1)之间的分歧是什么?和cin.ignore(n)
- 数组与其地址之间的关系是什么?
- Qt中数据类(模型)和视图/控制器类之间的数据通信的正确方式是什么
- 当编译器看到 std::vector<Typo> 和 std::vector<struct 拼写错误时发出的诊断之间的差异背后的理由是什么>
- 相对于一元算术运算符+,C和C++之间存在差异的原因是什么
- 链接列表C 类,这两个添加节点实现之间的差异是什么?
- 在QT中的两个窗口之间进行通信的最佳方法是什么?