C++结构体声明时初始化

提示:文章

文章目录

前言

前期疑问:
本文目标:


一、背景

最近

二、

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 结构体有一个构造函数,它接受两个参数,这两个参数分别用来初始化 xy 成员。如果在创建 Point 对象时没有提供参数,那么 xy 将使用默认值0。如果提供了参数,将使用提供的参数值来初始化 xy

上述是百度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;

总结

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值