DBe*_*nko 18 c++ null qt c++11
我看到Q_NULLPTR在Qt源代码和示例中被大量使用,但是我没有找到关于它究竟是什么以及什么时候应该使用的文档.
例如,在新的Qt v5.6中添加的新Qt SerialBus模块的官方演示中:
if (!m_canDevice->connectDevice()) {
delete m_canDevice;
m_canDevice = Q_NULLPTR;
Run Code Online (Sandbox Code Playgroud)
这是否适用于nullptr在C++ 11中添加之前的目的?如果是这样,现在我们有C++ 11,我应该使用Q_NULLPTR吗?
PS:我尝试在Qt源代码中搜索宏的定义,但未能找到它.
And*_* R. 20
Q_NULLPTR是一个宏,它被替换为nullptr好像编译器支持c ++ 11和NULL(0如果它不支持).如果你使用c ++ 11,你可以写nullptr; NULL如果你不这样做,请使用.
dte*_*ech 16
在C++ 11中添加之前,这是否符合nullptr的目的?如果是这样,既然我们有C++ 11,我应该使用Q_NULLPTR吗?
是(有些)和否.
C++在当时还很缺乏,所以Qt有自己的东西,后来随着C++赶上了这些功能而变得过时了.
话虽如此,Q_NULLPTR(在)功能上并不相同nullptr,(正如Andrei指出的那样,如果支持C++ 11扩展到nullptr它)它没有给你类型安全,只是语法"糖".它说明了阅读代码的人的意图,而不是编译器的意图nullptr.
| 归档时间: |
|
| 查看次数: |
6106 次 |
| 最近记录: |