C++ C++;:指针和圆括号-这是什么意思?
我必须对别人写的函数进行谷歌测试,我遇到了前所未有的情况。请参见下面的伪代码:C++ C++;:指针和圆括号-这是什么意思?,c++,pointers,boost,C++,Pointers,Boost,我必须对别人写的函数进行谷歌测试,我遇到了前所未有的情况。请参见下面的伪代码: typedef boost::shared_ptr<CSomeClass> CSomeClass_sh_ptr; CSomeClass_sh_ptr getSomething(int A) { if(A>3) { return CSomeClass_sh_ptr(); } CSomeClass_s
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;
}
或
boost::shared_ptr()
意思?在您的上下文中,
CSomeClass_sh_ptr()
是CSomeClass_sh_ptr
的默认构造实例。换句话说,一个默认构建的boost::shared_ptr
请注意,
boost::shared_ptr
不是指针。它是一种管理指针的类型。默认构造时,其托管指针为NULL或nullptr
在您的上下文中,CSomeClass\u sh\u ptr()
是CSomeClass\u sh\u ptr
的默认构造实例。换句话说,一个默认构建的boost::shared_ptr
请注意,
boost::shared_ptr
不是指针。它是一种管理指针的类型。默认构造时,其托管指针为NULL或nullptr
在您的上下文中,CSomeClass\u sh\u ptr()
是CSomeClass\u sh\u ptr
的默认构造实例。换句话说,一个默认构建的boost::shared_ptr
请注意,
boost::shared_ptr
不是指针。它是一种管理指针的类型。默认构造时,其托管指针为NULL或nullptr
在您的上下文中,CSomeClass\u sh\u ptr()
是CSomeClass\u sh\u ptr
的默认构造实例。换句话说,一个默认构建的boost::shared_ptr
请注意,
boost::shared_ptr
不是指针。它是一种管理指针的类型。默认构造时,其托管指针为NULL或<代码> NulLPTR < /C> > P/> 您的误解是,您考虑<代码> Boo::SyryPPTR <代码>指针,而实际上是“代码>类< /COD>管理指针<代码> CSomeClass <代码>,因此<代码> Booo::SyrSypTr.()< /代码>表示该类对象的构造。
< P>您的误解是,您考虑<代码> Boo::SyryPPTR <代码>指针,而实际上它是一个<代码>类< /代码>,管理一个指向<代码> CSomeClass < /代码>的指针,因此<代码> Booo::SyrSypTr.()< /代码>表示该类对象的构造。 < P>您的误解是,您考虑<代码> Boo::SyryPPTR <代码>指针,而实际上它是一个<代码>类< /代码>,管理一个指向<代码> CSomeClass < /代码>的指针,因此<代码> Booo::SyrSypTr.()表示该类对象的构造。 < p>您认为“代码>Boo::SyryPPTR <代码>指针,而实际上是一个代码< >代码>管理一个指向<代码> CSomeClass < /C> >,因此<代码> Boo::SyryPtRE()/代码>表示该类的对象的构造。 < P>类型的名称,后跟一个()
,表示创建该类型的临时值,即初始化值。在您的例子中,正如其他人指出的,类型是类模板的实例化,因此是类。初始化一个类的值就是调用它的默认构造函数(如果它有),或者零初始化它(如果它没有构造函数)。(boost::shared_ptr
有一个默认构造函数,因此会调用它)。若你们实际上有一个指针,初始化它的值就是初始化它的零,这将导致一个空指针。(boost::shared_ptr的默认构造函数模仿指针行为的这一方面;其默认构造函数创建一个行为类似于空指针的共享指针。)类型的名称,后跟一个()
,表示创建该类型的临时值,即初始化值。在您的例子中,正如其他人指出的,类型是类模板的实例化,因此是类。初始化一个类的值就是调用它的默认构造函数(如果它有),或者零初始化它(如果它没有构造函数)。(boost::shared_ptr
有一个默认构造函数,因此会调用它)。若你们实际上有一个指针,初始化它的值就是初始化它的零,这将导致一个空指针。(boost::shared_ptr的默认构造函数模仿指针行为的这一方面;其默认构造函数创建一个行为类似于空指针的共享指针。)类型的名称,后跟一个()
,表示创建该类型的临时值,即初始化值。在您的例子中,正如其他人指出的,类型是类模板的实例化,因此是类。初始化一个类的值就是调用它的默认构造函数(如果它有),或者零初始化它(如果它没有构造函数)。(boost::shared_ptr
有一个默认构造函数,因此会调用它)。若你们实际上有一个指针,初始化它的值就是初始化它的零,这将导致一个空指针。(boost::shared_ptr的默认构造函数模仿指针行为的这一方面;其默认构造函数创建一个行为类似于空指针的共享指针。)类型的名称,后跟一个()
,表示创建该类型的临时值,即初始化值。在您的例子中,正如其他人指出的,类型是类模板的实例化,因此是类。初始化一个类的值就是调用它的默认构造函数(如果它有),或者零初始化它(如果它没有构造函数)。(boost::shared_ptr
有一个默认构造函数,因此会调用它)。若你们实际上有一个指针,初始化它的值就是初始化它的零,这将导致一个空指针。(boost::share_ptr的默认构造函数模仿指针行为的这一方面;其默认构造函数创建一个行为类似于空指针的共享指针。)boost::share_ptr的构造函数type@billz:没有。那是临时的。构造函数是一个特殊函数,它的声明(对于模板类型)是
CSomeClass_sh_ptr()
boost::shared_ptr<CSomeClass>()