草庐IT

c++ - std::function 构造函数和 nullptr

为什么下面的代码输出“0”?#include#includeintmain(){typedefvoid(*fp_t)();fp_tfp=nullptr;std::functionf=fp;std::cout我已经使用gcc4.7.2和MSVC-11.0对其进行了测试。我认为它应该打印“1”,因为标准中的以下引用:ISO/IEC14882:201120.8.11.2.1函数构造/复制/销毁[func.wrap.func.con]templatefunction(Ff);templatefunction(allocator_arg_t,constA&a,Ff);...8Postcondit

c++ - std::function 构造函数和 nullptr

为什么下面的代码输出“0”?#include#includeintmain(){typedefvoid(*fp_t)();fp_tfp=nullptr;std::functionf=fp;std::cout我已经使用gcc4.7.2和MSVC-11.0对其进行了测试。我认为它应该打印“1”,因为标准中的以下引用:ISO/IEC14882:201120.8.11.2.1函数构造/复制/销毁[func.wrap.func.con]templatefunction(Ff);templatefunction(allocator_arg_t,constA&a,Ff);...8Postcondit

c++ - 何时使用 Q_NULLPTR?

我看到Q_NULLPTR在Qt源代码和示例中被大量使用,但我没有找到关于它到底是什么以及何时应该使用它的文档。例如在这个官方demonstration新Qtv5.6中添加的新QtSerialBus模块:if(!m_canDevice->connectDevice()){deletem_canDevice;m_canDevice=Q_NULLPTR;在C++11中添加之前,这是否达到了nullptr的目的?如果是这样,既然我们有了C++11,我应该使用Q_NULLPTR吗?PS:我尝试在Qt源代码中搜索宏的定义,但没有找到。 最佳答案

c++ - 何时使用 Q_NULLPTR?

我看到Q_NULLPTR在Qt源代码和示例中被大量使用,但我没有找到关于它到底是什么以及何时应该使用它的文档。例如在这个官方demonstration新Qtv5.6中添加的新QtSerialBus模块:if(!m_canDevice->connectDevice()){deletem_canDevice;m_canDevice=Q_NULLPTR;在C++11中添加之前,这是否达到了nullptr的目的?如果是这样,既然我们有了C++11,我应该使用Q_NULLPTR吗?PS:我尝试在Qt源代码中搜索宏的定义,但没有找到。 最佳答案

c++ - unique_ptr 可以采用 nullptr 值吗?

此代码片段有效吗?:unique_ptrp(newA());p=nullptr;也就是说,我可以将nullptr分配给unique_ptr吗?还是会失败?我用g++编译器尝试了这个,它成功了,但是其他编译器呢? 最佳答案 它会起作用。来自C++11标准的第20.7.1.2.3/8-9段关于unique_ptr类模板:unique_ptr&operator=(nullptr_t)noexcept;Effects:reset().Postcondition:get()==nullptr这表示类模板的定义unique_ptr包含opera

c++ - unique_ptr 可以采用 nullptr 值吗?

此代码片段有效吗?:unique_ptrp(newA());p=nullptr;也就是说,我可以将nullptr分配给unique_ptr吗?还是会失败?我用g++编译器尝试了这个,它成功了,但是其他编译器呢? 最佳答案 它会起作用。来自C++11标准的第20.7.1.2.3/8-9段关于unique_ptr类模板:unique_ptr&operator=(nullptr_t)noexcept;Effects:reset().Postcondition:get()==nullptr这表示类模板的定义unique_ptr包含opera

c++ - nullptr 可以用作变量参数(varargs)吗?

我可以使用nullptr关键字作为变量函数的参数吗?如果是这样,它是否经过任何类型的标准转换,结果值的类型是什么?具体来说,下面的说法正确吗?std::printf("%p",nullptr);还是必须这样:std::printf("%p",static_cast(nullptr)); 最佳答案 §5.2.2p7Whenthereisnoparameterforagivenargument,theargumentispassedinsuchawaythatthereceivingfunctioncanobtainthevalueof

c++ - nullptr 可以用作变量参数(varargs)吗?

我可以使用nullptr关键字作为变量函数的参数吗?如果是这样,它是否经过任何类型的标准转换,结果值的类型是什么?具体来说,下面的说法正确吗?std::printf("%p",nullptr);还是必须这样:std::printf("%p",static_cast(nullptr)); 最佳答案 §5.2.2p7Whenthereisnoparameterforagivenargument,theargumentispassedinsuchawaythatthereceivingfunctioncanobtainthevalueof

c++ - 鉴于 p 是一个指针是 "p > nullptr"格式正确吗?

给定一个指针p:char*p;//Couldbeanytype假设p已正确初始化,则格式如下:if(p>0)//orp>nullptr更一般地说,当一个操作数是指针而另一个操作数是空指针常量时,使用关系运算符是否格式正确? 最佳答案 在C++14中,此代码格式错误,但在C++14之前,此代码格式正确(但结果未指定),如defectreport583:Relationalpointercomparisonsagainstthenullpointerconstant备注:InC,thisisill-formed(cfC996.5.8):

c++ - 鉴于 p 是一个指针是 "p > nullptr"格式正确吗?

给定一个指针p:char*p;//Couldbeanytype假设p已正确初始化,则格式如下:if(p>0)//orp>nullptr更一般地说,当一个操作数是指针而另一个操作数是空指针常量时,使用关系运算符是否格式正确? 最佳答案 在C++14中,此代码格式错误,但在C++14之前,此代码格式正确(但结果未指定),如defectreport583:Relationalpointercomparisonsagainstthenullpointerconstant备注:InC,thisisill-formed(cfC996.5.8):