共享ptr在if条件下如何工作 在C++中,我可以写一些类似的东西: shared_ptr<A> a_sp = someFunctionReturningSharedPtr(); if (a_sp) { cout << a_sp->someData << endl; } else { cout << "Shared Pointer is NULL << endl; } shared_ptr a_sp=someFunctionReturningSharedPtr(); 如果(a_sp){ cout someData

共享ptr在if条件下如何工作 在C++中,我可以写一些类似的东西: shared_ptr<A> a_sp = someFunctionReturningSharedPtr(); if (a_sp) { cout << a_sp->someData << endl; } else { cout << "Shared Pointer is NULL << endl; } shared_ptr a_sp=someFunctionReturningSharedPtr(); 如果(a_sp){ cout someData,c++,shared-ptr,C++,Shared Ptr,shared\u ptr具有运算符bool(),如果它不为空,则返回true 例如,这是Microsoft对shared_ptr::operator bool()的实现: shared_ptr::operator boolean类型-测试是否存在拥有的资源。shared_ptr具有运算符bool(),如果它不为空,则返回true 例如,这是Microsoft对shared_ptr::operator bool()的实现: 共享的\u ptr::运算符布尔类型-测试是否存在所拥有的资源。share

shared\u ptr具有运算符bool(),如果它不为空,则返回true

例如,这是Microsoft对shared_ptr::operator bool()的实现:


shared_ptr::operator boolean类型-测试是否存在拥有的资源。

shared_ptr具有运算符bool(),如果它不为空,则返回true

例如,这是Microsoft对shared_ptr::operator bool()的实现:


共享的\u ptr::运算符布尔类型-测试是否存在所拥有的资源。

shared\u ptr
有一个
运算符unspecified-bool-type()常量,允许在布尔上下文中使用。未指定的布尔类型通常定义为指向函数的指针或指向成员函数的指针,以禁止意外匹配布尔函数重载


C++0x
中,习惯用法是使用
显式运算符bool()const;
,这不允许隐式转换(例如函数调用、算术转换为
int
,等等),但仍允许在布尔上下文中将
shared\u ptr
转换为bool。

shared\u ptr
具有
运算符unspecified-bool-type()常量,允许在布尔上下文中使用。未指定的布尔类型通常定义为指向函数的指针或指向成员函数的指针,以禁止意外匹配布尔函数重载


C++0x
中,习惯用法是使用
显式运算符bool()const;
,这不允许隐式转换(例如函数调用、算术转换为
int
,等等),但仍然允许在布尔上下文中将
shared\u ptr
转换为bool。

Mankarse:这是什么语法
运算符unspecified-bool-type()
。我以前没见过。这对boost来说有什么特别的吗?未指定的bool类型只是实际类型(如bool)的替代。这种语法不是特殊的boost,而是用于声明“类型转换运算符”的语法。请参阅Mankarse:Awesome。感谢您的链接。Mankarse:operator unspecified-bool-type()的语法是什么?
。我以前从未见过这种语法。这是一种特殊的增强功能吗?unspecified bool type只是实际类型(如bool)的替代。这种语法不是一种特殊的增强功能,而是用于声明“类型转换运算符”。请参阅Mankarse:Awesome。感谢您提供的链接。这只是概念上正确的,但实际上不正确:;但需要用显式转换运算符修复:这只是概念上正确的,但实际上不正确:;但要用显式转换运算符修复: