Avoid unnamed objects with custom construction and destruction (es.84)

96
22 декабря 2020, 11:20

К примеру есть такой простой код

class obj
{
    int i;
public:
    obj() : i(0) {}
    obj(int j) : i(j) {}
    obj(const obj& z) : i(z.i) {}
    obj operator=(const obj& z)
    {
        i = z.i;
        return (*this);
    }
    void print()
    {
        cout << i << endl;
    }
    ~obj(){}
};
int main()
{
    obj a(1);
    a = obj(2); //C26444    Avoid unnamed objects with custom construction and destruction (es.84)
    a.print();
    return 0;
}

в строчке

a = obj(2);

visual studio 2019 кидает предупреждение

Avoid unnamed objects with custom construction and destruction (es.84).

Поискал в гугле, но ничего понятного не нашел, буду признателен любой помощи

Answer 1

В описании сообщения в документации (https://docs.microsoft.com/en-us/visualstudio/code-quality/c26444?view=vs-2019) сказано, что данное предупреждение генерируется в том числе при игнорировании нетривиальных результатов вызовов функций.

Именно такое такое игнорирование происходит при вызове вашего оператора присваивания из-за того, что ваш оператор присваивания почему-то возвращает свой результат по значению.

Answer 2

Поменял обьявление

obj operator=(const obj& z)

на

obj& operator=(const obj& z)

warning пропал, почему - загадка.

READ ALSO
с++ *** stack smashing detected ***: &lt;unknown&gt; terminated Aborted (core dumped)

с++ *** stack smashing detected ***: <unknown> terminated Aborted (core dumped)

Я пытаюсь сравнить два элемента массива, текущий и предыдущий, ставлю break; чтобы закончить выполнение цикла и выводится такое сообщение в консоль...

103
Кнопки html на python CGI

Кнопки html на python CGI

Прошу помощиПри нажатии на кнопку с названием "BUTTON"(условно), выполняется запись значения 1 в переменную A

120
Проблема с кодировкой (Graphics)

Проблема с кодировкой (Graphics)

Надо при помощи Graphics нарисовать на Bitmap'e текст и сохранить его как файл (png) С английским текстом всё нормально, а с русским нет

137