MyTetra Share
Делитесь знаниями!
Техника поиска кода, использующего конструктор копирования или оператор копирования в языке Си++
Время создания: 26.06.2021 12:59
Текстовые метки: c++, поиск, найти, код, вызов, конструктор копирования, оператор копирования, равно, техника, методика
Раздел: Компьютер - Программирование - Язык C++ (Си++)
Запись: xintrea/mytetra_syncro/master/base/1624701541viivv7o14z/text.html на raw.github.com

Если имеется некий большой проект, в котором необходимо найти места, в которых происходит копирование объекта через конструктор копирования или через оператор копирования, то можно поступить следующим образом.


В классе объекта надо создать "невызываемые" конструктор копирования и оператор копирования. Выглядят они примерно так:



LineLayout(LineLayout const &) = delete;

LineLayout & operator=(LineLayout const &) = delete;



То есть, синтаксис = delete; в определении функции/метода делает их невызываемыми.


Если нигде в коде не используется копирования через эти два механизма, то код без ошибок соберется компилятором и будет работать без изменений.


Если же где-то в коде есть вызов конструктора копирования или оператора копирования, то такой код не соберется, и компилятор выдаст ошибку на той строке, где происходит это действие. Таким образом, с помощью компилятора можно находить места вызовов конструктора копирования или оператора копирования. Причем, данный способ не зависит от компилятора - он будет работать на любом компиляторе, хоть на gcc, хоть на clang, хоть на msvc.





Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования