gpt4 book ai didi

C++ 对象赋值给 NULL

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:56 27 4
gpt4 key购买 nike

我正在查看一些使用 Boost.Function 的代码并且有关于如何编写代码以允许分配给 NULL 的问题。我试图找到相应的 Boost 代码,但无法找到。基本上,是什么让这成为可能?

boost::function<void()> func;
func = NULL;

编辑:尽管以下内容不适合我编译,那么他们又如何防止这种情况呢?

func = 1;

最佳答案

通过运算符重载指针参数。来自 boost 源:

#ifndef BOOST_NO_SFINAE
self_type& operator=(clear_type*)
{
this->clear();
return *this;
}
#endif

这并不意味着“func”本身为 NULL,实际上您可以访问它自己的函数。以下代码编译且不会崩溃。

TEST_F(CppTest, BoostFunctions) {
boost::function<void()> func;
func = NULL;
ASSERT_TRUE(func==NULL);
ASSERT_FALSE(func.has_trivial_copy_and_destroy());
}

关于C++ 对象赋值给 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5030437/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com