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>()