gpt4 book ai didi

c++ - 在类和 cpp 核心指南中初始化优先级变量?

转载 作者:行者123 更新时间:2023-11-30 02:31:18 24 4
gpt4 key购买 nike

我使用了 C++ Core Checker nuget 并运行了我的代码分析器,我收到了这个警告

warning C26495: Variable 'Point::_x' is uninitialized. Always initialize a member variable. (type.6:

http://go.microsoft.com/fwlink/p/?LinkID=620422)

Point.h
class Point
{
private:
int _x;
int _y;
public:
Point();
Point(int x, int y) :_x(x), _y(y) {}
~Point();

void setX(int x)
{
_x = x;
}
void setY(int y)
{
_y = y;
}

int getX()
{
return _x;
}
int getY()
{
return _y;
}
}

Point.cpp
#include "Point.h"

Point::Point()
{
}


Point::~Point()
{
}

警告 C26495:变量“Point::_x”未初始化。我通过 make _x = 0 解决了这个问题。我的修复是否正确并且与指南相符?

最佳答案

在 C++11 标准中,您的修复是有效的解决方案。

来自 cppreference文章:

Member initialization

非静态数据成员可以通过以下两种方式之一进行初始化:

1) 在构造函数的成员初始化列表中。

struct S
{
int n;
std::string s;
S() : n(7) // direct-initializes n, default-initializes s
{ }
};

2) 通过默认的成员初始化器,它只是成员声明中包含的大括号或等于初始化器,如果成员在成员初始化器列表中被省略,则使用它

struct S
{
int n = 7;
std::string s{'a', 'b', 'c'};
S() // copy-initializes n, list-initializes s
{ }
};

并且您的解决方案使用了 2) 中使用的 equals 初始值设定项

关于c++ - 在类和 cpp 核心指南中初始化优先级变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37957589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com