В Visual Studio Code, почему он автоматически создает «main :: main и main :: ~ main», кроме класса? - PullRequest
1 голос
/ 27 марта 2020

Итак, при использовании «intellisense», когда я хочу создать класс, он также создает эти две другие функции (не уверен, правильно ли я их называю):

class main
{
private:
    /* data */
public:
    main(/* args */);
    ~main();
};

main::main(/* args */)
{
}

main::~main()
{
}

Почему это так? Чем они полезны, а также "~" побитового НЕ?

1 Ответ

1 голос
/ 27 марта 2020

Это специальные функции-члены, определяемый пользователем конструктор по умолчанию и определяемый пользователем деструктор.

VS Код специально делает это, потому что корпоративный стиль кода Microsoft всегда требует наличия конструктора \ деструктора в классе. До такой степени, что в более старых версиях их компиляторов инициализация по умолчанию для тривиальных классов никогда не была значением (нулевой) инициализацией (несовместимой со стандартом). C ++ не имеет такого требования в правилах, это делает класс не тривиальным \ POD.

Как обычно, их IDE выполняет только половину работы. При таком подходе нужно определить пять функций, а не две, см. «Правило нуля».

...