使用结构名称作为函数
Using struct name as a function
我正在努力理解以下行的作用:
BStats stats = BStats();
结构体定义如下:
struct BStats
{
unsigned a;
unsigned b;
BStats& operator+=(const BStats& rhs)
{
this->a += rhs.a;
this->b += rhs.b;
return *this;
}
};
但我不知道这条线是干什么的。它在调用默认构造函数吗?
表达式BStats()
在5.2.3/2中的标准中进行了描述:
表达式T(),其中T是非数组完整对象类型或(可能是cv限定的)void类型的简单类型说明符(7.1.5.2),创建指定类型的右值,该右值已初始化值。
也就是说,该表达式创建Bstats
类型的右值,该右值是初始化的值。在您的特定情况下,值初始化意味着BStats
结构的两个成员将被设置为零。
请注意,这与其他答案中提到的调用默认构造函数的行为不同,因为默认构造函数不会保证成员设置为0。
就像任何类一样,结构有一个由编译器自动创建的默认构造函数。在您的情况下,BStats()只是调用默认构造函数,尽管显式调用是无用的。
在C++中,类和结构几乎相同(不同之处在于C++结构是以public作为默认属性的类,其中类是私有的),所以这就像调用构造函数一样。
相关文章:
- 使用不带参数的函数访问结构元素
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 链表,反向函数,数据结构
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 需要帮助将结构数组传递给函数
- 使用cpp中的结构和函数的多个学生条目
- 如何传递带有通过引用传递的结构参数的函数?
- 在类构造函数中使用结构变量
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 在类构造函数中定义结构变量的参数
- 如何在模板类函数中分配结构值?
- 我应该在C++中将这些结构用作参数化构造函数吗?
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 在结构外部调用指向函数的指针
- 函数:结构的数组
- C++错误:只能为对象和函数结构指定存储类
- 将libuv与函数结构一起使用,而不是函数回调
- 从c#调用c++函数-结构体,指针,函数指针
- 函数结构数组输入cin问题