我必须对其他人写的某些功能进行谷歌测试,而且我的情况是我以前从未有过的。请参阅下面的伪代码:
typedef boost::shared_ptr<CSomeClass> CSomeClass_sh_ptr;
CSomeClass_sh_ptr getSomething(int A)
{
if(A>3)
{
return CSomeClass_sh_ptr();
}
CSomeClass_sh_ptr pointerToCSomeClass = otherPointerToCSomeClass;
return pointerToCSomeClass;
}
所以我的问题是 - 做什么
CSomeClass_sh_ptr()
或
boost::shared_ptr<CSomeClass>()
意思?
答案 0 :(得分:1)
在您的上下文中,CSomeClass_sh_ptr()
是CSomeClass_sh_ptr
的默认构造实例。换句话说,默认构造为boost::shared_ptr<CSomeClass>
。
请注意boost::shared_ptr<SomeClass>
不是指针。它是一种管理指针的类型。默认构造时,其托管指针为NULL或nullptr
。
答案 1 :(得分:1)
你的误解是你认为boost::share_ptr<CSomeClass>
是指针,而它实际上是class
管理指向CSomeClass
的指针,因此boost::share_ptr<CSomeClass>()
表示对象的构造类。
答案 2 :(得分:1)
类型的名称,后跟()
,表示创建该类型的临时值,初始化值。在您的情况下,正如其他人所指出的那样,类型是类模板的实例化,因此是类。初始化类的值是调用其默认构造函数(如果有),或者如果没有构造函数则将其初始化为零。 (boost::shared_ptr
有一个默认的构造函数,因此它被调用)。如果你实际上有一个指针,那么值初始化它将是零初始化它,这将导致一个空指针。 (boost::shared_ptr
的默认构造函数模仿指针行为的这个方面;它的默认构造函数创建一个行为类似于空指针的共享指针。)