Инициализированная переменная приоритета в основных рекомендациях класса и cpp?

Я использую 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. Является ли мое исправление правильным и соответствует руководству?

0

Решение

В стандарте C ++ 11 ваше исправление является верным решением.

от cppreference статья:

Инициализация члена

Нестатические элементы данных могут быть инициализированы одним из двух способов:

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
{ }
};

И ваше решение использует инициализатор equals, используемый в 2)

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector