Cтраница 1
Перегруженные операторы могут быть функциями-членами, как в примерах этой главы, либо задаваться функциями-друзьями, не принадлежащими классу. Более подробно такие операторы будут рассматриваться на занятии 14 во время изучения специальных классов и функций. [1]
Перегруженный оператор применяется в строке 171, где выполняется конкатенация двух строк. [2]
Объявление перегруженных операторов выполняется так же, как и функций. Используйте ключевое слово operator, за которым следует сам перегружаемый оператор. В функциях операторов с одним операндом параметры не задаются, за исключением операторов постинкремента и постдекремента, в которых целочисленный параметр играет роль флага. [3]
Но в работе перегруженного оператора инкремента существует один серьезный недостаток. [4]
В классе реализованы несколько вариантов перегруженных операторов и, которые, соответственно, загружают указанный объект ( или примитивный тип) из архива, или сохраняют его в нем. [5]
Добавить объявления деструктора, конструктора копирования и перегруженный оператор присваивания в программу 9.8, чтобы превратить ее в АТД первого класса, включить соответствующие реализации в программы 9.9 и 9.10 и написать программу-драйвер, которая протестирует полученные интерфейс и реализацию. [6]
Подобно стандартной операции сложения, выражение, содержащее более одного перегруженного оператора, вычисляется слева направо. [7]
В классе должны быть явно определены стандартный конструктор, конструктор-копировщик и перегруженный оператор присваивания. [8]
Важное преимущество, которое дает создание конструкторов преобразования, состоит в применении перегруженных операторов, определенных для класса, и в том, что пропадает необходимость в написании отдельной функции-оператора для каждой ожидаемой комбинации операндов. [9]
В строках 166 и 167 создаются два дополнительных объекта String, и в строке 168 используется перегруженный оператор суммирования. [10]
Чтобы понять, как происходит этот процесс, следует четко уяснить принципы работы, справедливые для ВСЕХ перегруженных операторов, определенных с помощью ключевого слова operator. В случае с операторами с двумя операндами ( такими как или) находящийся справа операнд объявляется как параметр функции оператора, заданной в конструкторе. [11]
В отличие от простого копирования адреса блока памяти, хранящегося в поле Buffer, из объекта-источника в объект-приемник, перегруженный оператор создает совершенно новый блок памяти для объекта-приемника, а затем копирует строку в память. Таким образом, каждый объект имеет собственную копию строки. [12]
Фактически, операции чтения и записи выполняет функция CLine: Serialize, а не одноименные функции других классов. Функция Serialize использует перегруженные операторы и для записи переменных класса CLine в файл и для чтения их из файла соответственно. Эти операторы определяются классом CArchive и используются для чтения и записи данных различных типов. [13]
Мы использовали шаблоны и перегруженные операторы, чтобы программы можно было использовать без изменений со многими различными типами данных. [14]
Глобальный объект cin отвечает за ввод данных и становится доступным при включении в программу класса lost ream. В предыдущих примерах используется перегруженный оператор ввода () для присвоения вводимых данных переменным программы. [15]