Перегрузка оператора для пре- и пост-инкремента
Это исследование углубляется в возможность перегрузки оператора для облегчения как предварительного, так и пост-инкремента. операции увеличения. При предварительном приращении (SampleObject) объект увеличивается перед возвратом его значения. Постинкремент (SampleObject) увеличивает объект и возвращает его исходное значение.
Реализация этих операций посредством перегрузки операторов требует понимания ограничений возвращаемых типов. Хотя перегрузка на основе возвращаемых типов может показаться допустимой, она создает проблему двусмысленности. Перегрузка операторов расширяет функциональность встроенных типов на определяемые пользователем типы. Тем не менее, остается неясным, почему приращение до и после не может сосуществовать для пользовательских типов.
Чтобы устранить эту двусмысленность, оператор постфиксного приращения использует фиктивный параметр int:
// Prefix
Sample& operator ()
{
// Increment logic on this instance; return reference to it.
return *this;
}
// Postfix
Sample operator (int)
{
Sample tmp(*this);
operator (); // Prefix-increment this instance
return tmp; // Return value before increment
}
При таком подходе оператор предварительного приращения возвращает ссылку на увеличенный объект, а оператор пост-инкремента возвращает копию объекта до операции приращения.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3