C++:指针,然后是圆括号 - 这是什么意思
C++: Pointer and then roound brackets - what does it mean?
我必须对别人写的一些函数进行谷歌测试,我遇到了以前从未有过的情况。请参阅下面的伪代码:
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>()
意味 着?
在您的上下文中,CSomeClass_sh_ptr()
是 CSomeClass_sh_ptr
的默认构造实例。换句话说,默认构造boost::shared_ptr<CSomeClass>
.
请注意,boost::shared_ptr<SomeClass>
不是指针。它是一种管理指针的类型。默认构造时,其托管指针为 NULL 或 nullptr
。
你的误解是你认为boost::share_ptr<CSomeClass>
是一个指针,而它实际上是一个管理指向CSomeClass
的指针class
,因此boost::share_ptr<CSomeClass>()
表示该类对象的构造。
类型的名称,后跟一个()
,表示创建该类型的临时值初始化。 在您的情况下,正如其他人指出的那样,类型是类模板的实例化,因此是一个类。 对类进行值初始化是调用其默认构造函数(如果它有一个)或零初始化它(如果它没有构造函数)。 (boost::shared_ptr
有一个默认构造函数,所以它被调用)。 如果你实际上有一个指针,值初始化它就是零初始化它,这将导致一个空指针。 (boost::shared_ptr
的默认构造函数模仿指针行为的这一方面;其默认构造函数创建一个行为类似于空指针的共享指针。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思