提示:文章
文章目录
前言
前期疑问:
本文目标:
一、背景
最近
二、
2.1
c++ 结构体默认初始化
在C++中,结构体的默认成员初始化可以通过构造函数来完成。如果没有为结构体提供构造函数,那么结构体的成员将使用默认构造函数进行初始化(对于内置类型如int,double等,会被初始化为0)。
如果你想要为结构体提供一个默认的初始化值,你可以定义一个构造函数,并在其中设置默认的成员值。
以下是一个简单的例子:
struct Point {
int x;
int y;
Point(int xVal = 0, int yVal = 0) : x(xVal), y(yVal) {} // 构造函数
};
int main() {
Point p; // 使用默认初始化,x = 0, y = 0
Point q(10); // x = 10, y = 0
Point r(20, 30); // x = 20, y = 30
return 0;
}
在这个例子中,Point
结构体有一个构造函数,它接受两个参数,这两个参数分别用来初始化 x
和 y
成员。如果在创建 Point
对象时没有提供参数,那么 x
和 y
将使用默认值0。如果提供了参数,将使用提供的参数值来初始化 x
和 y
。
上述是百度Ai的回答。按照他的意思,如果c++的结构体没有提供构造函数,会使用默认构造函数进行初始化。这边需要验证。
但是其实写一个用于初始化的构造函数会更保险。比如我在代码中写了结构体的默认构造函数。
struct RoadDataInfoStruct
{
int fromId;
int toId;
std::string roadInfo;
std::vector<int> passTime;
std::vector<int> waitTime;
float passTimeRatio;
bool passTimeRealTimeCountOverFlag;
RoadDataInfoStruct()
{
fromId = 0;
toId = 0;
passTimeRatio 0.0f;
passTimeRealTimeCountOverFlag = false;
}
};
typedef RoadDataInfoStruct RoadDataInfo;
总结
未完待续