почему C ++ не устанавливает перегрузку операторов как "статическую"?
Если вы сделаете перегруженную функцию оператора статической, у нее не будет доступа к this
.Нужно было бы получить доступ к this
внутри перегруженной функции, так как обычно функция изменила бы состояние this
.
Вы можете сделать перегруженную операторную функцию static
, если вам не нужен доступ к this
внутри этой функции, что по сути означает, что вы не манипулируете состоянием объекта, для которого была вызвана операторная функция.,Таким образом, это возможно, но не обычно или по существу желательно.
Создание статически перегруженной операторной функции ограничит область действия операторской функции одним и тем же файлом.
Учитывая оба вышеперечисленных, компилятор не заставляет перегруженные операторные функции быть статичными, поскольку его применение не даст никакого реального преимущества или удобства, а неисполнение этого обеспечивает большее удобство.
почему C # заставляет перегрузку оператора быть "статической"?
Это объясняет это гораздо лучше, чем я.
Каковы преимущества и недостатки?
Ну, ответ на первый вопрос говорит, когда можно сделать перегруженную функцию оператора статичной, и это объясняет преимущества / недостатки.