如何在C++中初始化结构
How Structures are initialized in C++
我正在阅读Stroustrup的TCPPPL。书中的一句话是这样的:
struct X{
int i;
X(int);
X operator+(int);
};
struct Y{
int i;
Y(X);
Y operator+(X);
operator int();
};
extern X operator* (X,Y);
extern int f(X);
X x=1;
Y y=x;
int i=2;
int main()
{
//main body
}
我的问题(也许是一个微不足道的问题)是行中发生了什么:X x = 1;?结构 X 类型的变量 x 是否正在初始化,即它的i被赋予值 1?如果是这样,为什么 1 周围没有大括号?
我的问题(也许是一个微不足道的问题)是行中发生了什么:X x =1;
X 定义了一个构造函数,该构造函数采用一个 int:X::X(int i)
声明:
X x = 1;
相当于:
X x = X(1);
或
auto x = X(1);
或
auto x = X { 1 };
即使用 (int) 构造函数构造一个 X。
即它的 i 被赋予值 1?
是的,这是正确的**。
** 或者至少这是我的假设,没有看到构造函数的定义。我假设它看起来像这样:
X::X(int arg)
: i(arg)
{
}
相关文章:
- 在C和C++中初始化结构中的数组
- 我们可以用参数化构造函数初始化结构的数组吗?
- 尝试初始化结构内的联合时出错
- 使用其他成员初始化结构的成员?
- 使用构造函数初始化结构还是在之后设置其值更好?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何在另一个结构中初始化结构数组?
- 如何在构造函数中初始化结构体的动态数组?
- 初始化结构中的联合 - c++
- 尝试初始化结构向量时出现编译错误
- 用于初始化结构的 void 指针强制转换
- 初始化结构的两种方式
- 使用用户定义的构造函数初始化C++结构
- 使用初始值设定项列表初始化结构,对于 std::array 失败
- 在 c++ 中初始化结构的指针
- 无序列图会创建一个零初始化结构吗?
- 如何在C++中初始化结构
- C 用结构指针初始化结构
- 在C 中初始化结构数组
- 使用数组聚合初始化结构数组