C ++:指针然后用圆括号 - 它是什么意思?

时间:2014-01-15 11:19:58

标签: 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_sh_ptr pointerToCSomeClass = otherPointerToCSomeClass;
        return pointerToCSomeClass;
    }

所以我的问题是 - 做什么

CSomeClass_sh_ptr()

boost::shared_ptr<CSomeClass>()

意思?

3 个答案:

答案 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的默认构造函数模仿指针行为的这个方面;它的默认构造函数创建一个行为类似于空指针的共享指针。)